添加www并删除.php后添加尾部斜杠

时间:2016-03-16 19:54:11

标签: php .htaccess url-redirection friendly-url

我的网站包含about.php,contact.php和test.php?id = xyz。

我添加了以下重定向,使其更友好。

Options -Indexes -MultiViews

RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.krishibazar\.org$ [NC]
RewriteRule ^(.*)$ http://www.krishibazar.org/$1 [R=301,L]

# To externally redirect /dir/file.php to /dir/file
RewriteCond %{THE_REQUEST} \s/+(?:index)?(.*?)\.php[\s?] [NC]
RewriteRule ^ /%1 [R=301,L,NE]

# To internally forward /dir/file to /dir/file.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1\.php -f [NC]
RewriteRule ^(.+?)/?$ /$1.php [L]

这给了我

mydomain.com                      =>  www.mydomain.com
mydomain.com/about.php            =>  www.mydomain.com/about
mydomain.com/test.php?id=12       =>  www.mydomain.com/test?id=12
mydomain.com/about/               =>  CSS Error

它工作得非常好,除非我在最后给出错误时添加一个尾部斜杠。所以要么建议我防止错误或添加尾部斜杠。

1 个答案:

答案 0 :(得分:1)

选项1:摆脱斜线(适用于SEO)

使用尾部斜杠处理URL的附加规则怎么样?

我会将它放在上面的externallyinternally重定向之间,如下所示:

RewriteRule ^(.*)/$ /$1 [L,R=301]

在重写为PHP文件之前,应该将所有URL重定向到他们的无斜杠版本。

选项2:修复CSS

我认为你是相对引用你的样式表,比如

<style href="css/style.css" />

您可以将其更改为绝对参考

<style href="/css/style.css" />

无论假定的目录深度如何(它都在URL中用斜杠表示),它都应该有效。

结论

在这种情况下我会选择选项1,因为它为所有内容提供了一个网址,在我看来这是首选。