如何将example.com/forum/index.php重定向到example.com/forum/


How to redirect example.com/forum/index.php to example.com/forum/

我想知道如何将www.example.com/forum/index.php之类的链接重定向到www.example.com/forum/。我一直遇到麻烦,我试着在谷歌上查找它,但没有一个解决方案对我有效。我在根目录中安装了WordPress,在forum目录中也安装了phpbb论坛软件。

我的forum子目录.htaccess:

#
# Uncomment the statement below if you want to make use of
# HTTP authentication and it does not already work.
# This could be required if you are for example using PHP via Apache CGI.
#
#<IfModule mod_rewrite.c>
#RewriteEngine on
#RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
#</IfModule>
<Files "config.php">
Order Allow,Deny
Deny from All
</Files>
<Files "common.php">
Order Allow,Deny
Deny from All
</Files>

这是我的根文件夹.htaccess:

# BEGIN W3TC Browser Cache
<IfModule mod_deflate.c>
    <IfModule mod_setenvif.c>
        BrowserMatch ^Mozilla/4 gzip-only-text/html
        BrowserMatch ^Mozilla/4'.0[678] no-gzip
        BrowserMatch 'bMSIE !no-gzip !gzip-only-text/html
        BrowserMatch 'bMSI[E] !no-gzip !gzip-only-text/html
    </IfModule>
    <IfModule mod_headers.c>
        Header append Vary User-Agent env=!dont-vary
    </IfModule>
    <IfModule mod_filter.c>
        AddOutputFilterByType DEFLATE text/css application/x-javascript text/x-component text/html text/richtext image/svg+xml text/plain text/xsd text/xsl text/xml image/x-icon
    </IfModule>
</IfModule>
<FilesMatch "'.(css|js|htc|CSS|JS|HTC)$">
    FileETag None
    <IfModule mod_headers.c>
         Header set X-Powered-By "W3 Total Cache/0.9.2.4"
    </IfModule>
</FilesMatch>
<FilesMatch "'.(html|htm|rtf|rtx|svg|svgz|txt|xsd|xsl|xml|HTML|HTM|RTF|RTX|SVG|SVGZ|TXT|XSD|XSL|XML)$">
    FileETag None
    <IfModule mod_headers.c>
         Header set X-Powered-By "W3 Total Cache/0.9.2.4"
    </IfModule>
</FilesMatch>
<FilesMatch "'.(asf|asx|wax|wmv|wmx|avi|bmp|class|divx|doc|docx|eot|exe|gif|gz|gzip|ico|jpg|jpeg|jpe|mdb|mid|midi|mov|qt|mp3|m4a|mp4|m4v|mpeg|mpg|mpe|mpp|otf|odb|odc|odf|odg|odp|ods|odt|ogg|pdf|png|pot|pps|ppt|pptx|ra|ram|svg|svgz|swf|tar|tif|tiff|ttf|ttc|wav|wma|wri|xla|xls|xlsx|xlt|xlw|zip|ASF|ASX|WAX|WMV|WMX|AVI|BMP|CLASS|DIVX|DOC|DOCX|EOT|EXE|GIF|GZ|GZIP|ICO|JPG|JPEG|JPE|MDB|MID|MIDI|MOV|QT|MP3|M4A|MP4|M4V|MPEG|MPG|MPE|MPP|OTF|ODB|ODC|ODF|ODG|ODP|ODS|ODT|OGG|PDF|PNG|POT|PPS|PPT|PPTX|RA|RAM|SVG|SVGZ|SWF|TAR|TIF|TIFF|TTF|TTC|WAV|WMA|WRI|XLA|XLS|XLSX|XLT|XLW|ZIP)$">
    FileETag None
    <IfModule mod_headers.c>
         Header set X-Powered-By "W3 Total Cache/0.9.2.4"
    </IfModule>
</FilesMatch>
# END W3TC Browser Cache
# BEGIN W3TC Page Cache core
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^(.*'/)?w3tc_rewrite_test$ $1?w3tc_rewrite_test=1 [L]
    RewriteCond %{HTTP:Accept-Encoding} gzip
    RewriteRule .* - [E=W3TC_ENC:_gzip]
    RewriteCond %{REQUEST_METHOD} !=POST
    RewriteCond %{QUERY_STRING} =""
    RewriteCond %{HTTP_HOST} = site.com
    RewriteCond %{REQUEST_URI} '/$ [OR]
    RewriteCond %{REQUEST_URI} (sitemap(_index)?'.xml('.gz)?|[a-z0-9_'-]+-sitemap([0-9]+)?'.xml('.gz)?) [NC]
    RewriteCond %{REQUEST_URI} !('/wp-admin'/|'/xmlrpc.php|'/wp-(app|cron|login|register|mail)'.php|'/feed'/|wp-.*'.php|index'.php) [NC,OR]
    RewriteCond %{REQUEST_URI} (wp-comments-popup'.php|wp-links-opml'.php|wp-locations'.php) [NC]
    RewriteCond %{HTTP_COOKIE} !(comment_author|wp-postpass|wordpress_'[a-f0-9']'+|wordpress_logged_in) [NC]
    RewriteCond %{HTTP_USER_AGENT} !(W3' Total' Cache/0'.9'.2'.4) [NC]
    RewriteCond "%{DOCUMENT_ROOT}/wp-content/w3tc/pgcache/%{REQUEST_URI}/_index%{ENV:W3TC_UA}%{ENV:W3TC_REF}%{ENV:W3TC_SSL}.html%{ENV:W3TC_ENC}" -f
    RewriteRule .* "/wp-content/w3tc/pgcache/%{REQUEST_URI}/_index%{ENV:W3TC_UA}%{ENV:W3TC_REF}%{ENV:W3TC_SSL}.html%{ENV:W3TC_ENC}" [L]
</IfModule>
# END W3TC Page Cache core
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index'.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

Google网站管理员工具一直说我有重复的标题标签,因为这两个网址,我似乎不明白!

.htaccess中,关于URL,基本上可以做两件事。

重写URL

您可以在内部重写URL。如果用户访问example.com/forum/,您可以在内部重写URL以使用example.com/forum/index.php。用户将在其地址栏中看到example.com/forum

.htaccess文件中,这将被写为:

RewriteRule ^forum /forum/index.php [L]

RewriteRule指示它应该重写URL。^forum匹配example.com/forum/中的forum部分,并且/forum/index.php表示它应该将URL重写为/forum/index.php。Last [L]表示如果该RewriteRule匹配,则应停止匹配规则。

重定向URL

你也可以重定向URL。这将向客户端发送一个标头,以加载不同的页面。如果用户访问example.com/forum/index.php,您可以将其重写为example.com/forum,并命令请求该URL的客户端加载该URL。用户将在其地址栏中看到example.com/forum

.htaccess文件中,这将被写为:

RewriteRule ^forum/index'.php /forum [R,L]

同样,RewriteRule告诉如果URL与^forum/index'.php匹配,就应该重写它(注意转义点,因为它是regex,所以我们不希望它与每个字符匹配)。它将被重写为/forum。最后,我们有标志[R,L]R代表"重定向"(默认情况下为临时重定向),L再次代表"如果此规则匹配,则停止匹配任何其他规则"。

文档

有关mod_rewrite的文档可以在此处找到。