0

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

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

它确实很好用,但是由于一些 SEO 的东西,我需要在最后添加自动斜杠。

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

有什么解决办法??

4

1 回答 1

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]
于 2013-07-29T10:32:48.440 回答