处理URL末尾的尾随斜杠

时间:2012-11-07 17:13:37

标签: wordpress apache .htaccess mod-rewrite cpanel

为wordpress网站使用一致的URL结构有明显的优势。

我希望我的所有网址都以/(主页和内部网页网址)结尾。让我给出一个示例网站,它非常有效地处理它,以便URL不以斜杠结尾或以多个斜杠结尾,而是通过单斜杠重定向到URL。

http://viralpatel.net/blogs 301重定向到viralpatel.net/blogs /

http://viralpatel.net/blogs// 301重定向到viralpatel.net/blogs /

http://viralpatel.net/blogs/ 200确定

http://viralpatel.net/blogs/check-string-is-valid-date-java 301重定向到http://viralpatel.net/blogs/check-string-is-valid-date-java/

http://viralpatel.net/blogs/check-string-is-valid-date-java// 301重定向到http://viralpatel.net/blogs/check-string-is-valid-date-java/

http://viralpatel.net/blogs/check-string-is-valid-date-java/ 200确定

知道什么.htaccess规则可以帮助实现这一目标。我目前的.htaccess看起来像:

    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^javaexperience.com [NC]
    RewriteRule ^(.*)$ http://www.javaexperience.com/$1 [R=301,L]
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d    
    RewriteRule . /index.php [L]

1 个答案:

答案 0 :(得分:1)

您无法处理以//结尾的网址,因为在处理URI之前规则化了斜杠,因此mod_rewrite永远无法匹配//(它只会看到一个/)。要处理这个问题,您可能需要浏览器方面的内容。对于no斜杠,请在当前htaccess的RewriteBase行上方添加:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*[^/])$ /$1/ [L,R=301]