.htaccess 将 this/kind/of/address 重写为 this_kind_of_address.php

.htaccess rewrite this/kind/of/address to this_kind_of_address.php

嗨,Whosebug 用户!

我需要通过访问设置 url 重写以发出这些 url 请求:

this/kind/of/url

this/kind/of/url.php

指向这个文件:

this_kind_of_url.php

基本上,我需要将我在 url 中获得的所有“/”转换为“_”,如果未提供,则添加一个 .php 扩展名。一开始我认为它并不 复杂,但现在我几乎迷失了方向,因为我是 .htaccess 的新手。

在此先感谢您的宝贵帮助。

尝试:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/(.*)$ /_ [E=SLASH:Y,DPI]

RewriteCond %{ENV:SLASH} Y
RewriteRule ^([^/]+?)(?:\.php)$ /.php [L,R=301]

要理解这一点有点棘手,但第一条规则会检查以确保请求不是针对现有文件或目录的。如果其中有斜杠,则将其替换为 _ 并设置环境变量 "SLASH"。此规则将循环直到 URI 中不再有 /

这就是第二条规则发挥作用的地方。如果设置了环境变量,并且 URI 中不再有斜线,则它会重定向浏览器并在末尾添加一个 .php(如果没有的话)。

所以:

/this/kind/of/url

被重定向到

/this_kind_of_url.php