mod_rewrite和带有'.php'扩展名的标题

时间:2011-04-28 14:45:04

标签: php mod-rewrite

我有一个像this-is-the-title.php这样的网址colomn的数据库 我想在这里激活mod_rewrite:

Options +FollowSymlinks
RewriteEngine On
RewriteRule ^([a-zA-Z0-9-/]+)$ news.php?url=$1
RewriteRule ^([a-zA-Z0-9-/]+)/$ news.php?url=$1

但我对.php扩展程序有疑问。此规则仅适用于this-is-the-title而不是this-is-the-title.php。有没有办法激活mod重写与扩展名为.php的标题或我必须更改标题?

提前致谢

2 个答案:

答案 0 :(得分:4)

你的rewriterule不允许使用点字符...如果你想要something.php匹配,请使用:

^([a-zA-Z0-9-/.]+)$

我还简化了可能存在尾部斜杠的事实:由于斜杠已被允许,因此尾部斜杠也将匹配。

不要忘记添加一些重写以避免重写现有目录或文件:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

顺便说一句,为重写的URL添加php扩展没有任何意义,你应该坚持使用没有扩展名的干净URL。

所以你最终得到这样的东西:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([-/.a-zA-Z0-9]+)$ news.php?url=$1 [QSA,L]

答案 1 :(得分:0)

可能使用类似于

的规则
RewriteRule ^([a-zA-Z0-9-/]+)\.php$ news.php?url=$1 [L]