.htaccess添加线索斜杠

时间:2013-07-29 10:28:15

标签: php .htaccess

我从某个地方获得了这个代码..它基本上做的是删除.php扩展名

RewriteEngine On
RewriteRule    ^Start/?$    index.php    [NC,L]    
RewriteRule    ^Info/?$    info.php    [NC,L]   
RewriteRule    ^Gallery/?$    gallery.php    [NC,L]

它确实运作良好,但由于一些搜索引擎优化的东西,我需要在最后添加自动traling斜杠..

现在是sitename.com/Start 但它必须重写为sitename.com/start /

任何解决方案??

1 个答案:

答案 0 :(得分:0)

您应该使用301重定向处理此问题,将其置于已定义的规则之上:

RewriteCond %{REQUEST_URI} !(/$|\.) 
RewriteRule (.*) %{REQUEST_URI}/ [R=301,L] 

在您已定义的规则中删除可选的尾部斜杠标记也是值得的,因此生成的.htaccess文件将如下所示:

RewriteEngine On

RewriteCond %{REQUEST_URI} !(/$|\.) 
RewriteRule (.*) %{REQUEST_URI}/ [R=301,L] 

RewriteRule ^Start/$    index.php   [NC,L]    
RewriteRule ^Info/$     info.php    [NC,L]   
RewriteRule ^Gallery/$  gallery.php [NC,L]

为了避免第一个条件重写有效文件,你应该添加另一个条件:

RewriteCond %{REQUEST_FILENAME} !-f

最后,您的.htaccess应如下所示:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(/$|\.) 
RewriteRule (.*) %{REQUEST_URI}/ [R=301,L] 

RewriteRule ^Start/$    index.php   [NC,L]    
RewriteRule ^Info/$     info.php    [NC,L]   
RewriteRule ^Gallery/$  gallery.php [NC,L]