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

uto*_*pia 0 php mod-rewrite

我有一个数据库,有一个 url 列,就像this-is-the-title.php 我想在这里激活 mod_rewrite :

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

但我在.php扩展方面遇到问题。该规则仅适用于this-is-the-titlenot this-is-the-title.php。有没有什么方法可以使用具有 .php 扩展名的标题来激活 mod 重写,或者我必须更改标题?

提前致谢

Cap*_*ule 5

您的重写规则不允许点字符...如果您想something.php匹配,请使用以下命令:

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

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

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

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
Run Code Online (Sandbox Code Playgroud)

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

所以你最终会得到这样的结果:

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