.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
嗨,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