所以我有一个网站,我想通过使用mod_rewrite使SEO友好。我想通过在它们的末尾放下.php并使用mod_rewrite稍后重新附加它来使URL易于记忆。例如,假设http://example.com/about指向http://example.com/about.php。我有RewriteRule,应该根据我的经验,但由于某种原因没有。
我的规则:
RewriteEngine On
RewriteRule ^/?about$ about.php [L]
RewriteRule ^/?faq$ faq.php [L]
现在这些规则并不完全正常。似乎如果我将文件重命名为blah.about.php和blah.faq.php并更改RewriteRule行以反映其工作的新文件名。
这是mod_rewrite的限制,其中Pattern不能如此接近目标文件吗?
答案 0 :(得分:1)
试试这个:
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+(.*)\.php [NC]
RewriteRule ^ /%1 [R=301,QSA,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1\.php -f
RewriteRule ^([^/]+)/?$ $1.php [L]
第一条规则将请求重定向到phpless页面,然后内部重定向到php文件本身。
这是mod_rewrite的限制,其中Pattern不能如此接近目标文件吗?
它不是一个限制,你只是不能将php文件重定向到非php然后回到它,因为它生成一个循环,所以我们做的是捕获请求并从那里重定向然后内部重定向到文件。
除非你看到他们有不同的命名。