我已经尝试实现这个目标大约 1.5 小时了。我希望在我的网站上请求网站时进行以下转换:
homepage.com/ => index.php
homepage.com/archive => index.php?archive
homepage.com/archive/site-01 => index.php?archive/site-01
homepage.com/files/css/main.css => requestfile.php?css/main.css
前三个转换可以通过以下方法完成:
RewriteEngine on
RewriteRule ^/?$ index.php
RewriteRule ^/?(.*)$ index.php?$1
files
但是,我被困在了所有对子目录的请求都应重定向到的位置requestfile.php
。这是我做过的尝试之一:
RewriteEngine on
RewriteRule ^/?$ index.php
RewriteRule ^/?files/(.+)$ requestfile.php?$1
RewriteRule ^/?(.*)$ index.php?$1
但那不管用。我也试过放在[L]
第三行后面,但那没用,因为我正在使用此配置,.htaccess
子请求将再次转换该 URL,等等。我用命令进行了模糊测试RewriteCond
,但无法让它工作。
需要什么样的配置才能实现我的愿望?
答案1
RewriteEngine on
RewriteRule ^/?$ index.php
RewriteRule ^/files/?(.*)$ /requestfile.php?$1
RewriteCond %{REQUEST_URI} !^/files/$
RewriteRule ^/?(.*)$ index.php?$1