我正在尝试使用Apache2和PHP进行一些URL重写,问题是我创建了一个使用rewrite_mod的.htaccess文件,这里是:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ webroot/index.php [QSA,L]
^(.*)$
模式应匹配所有内容,但它与空请求不匹配,我不知道为什么。
为了给你一个例子,这里的/root
文件夹是.htaccess文件。
/root/anything
匹配; /root/some/thing
也匹配; /root/
不匹配。此处,/root/
请求应匹配,因为模式^(.*)$
表示“将任意字符从0次匹配到任意次数”。
有谁知道为什么它与空请求不匹配?
我目前正在Linux Mint下运行LAMP。
答案 0 :(得分:2)
你的规则如下:
RewriteEngine On
# handles landing page
RewriteRule ^/?$ webroot/index.php [L]
# handles rest
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . webroot/index.php [L]
mod_dir
模块如果在mod_rewrite
之前运行,并将DirectoryIndex
处理程序添加到着陆页,即/index.php
,从而因RewriteCond %{REQUEST_FILENAME} !-f
条件而阻止执行您的规则。< / p>