我的.htaccess
文件中有以下内容:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ _service.php?uri=$1 [NC,L]
</IfModule>
唯一的问题是没有重写,我只是在尝试访问服务器localhost
的根页时看到了一个目录列表。
即使我尝试将匹配设为可选RewriteRule ^(.*)?$ _service.php?uri=$1 [NC,L]
,它也不起作用。
重写似乎适用于任何其他情况,例如localhost/foo/bar
如何针对这种特殊情况进行重写?
答案 0 :(得分:1)
问题是root是一个目录。因此,这种情况会阻止您的规则被应用:
RewriteCond %{REQUEST_FILENAME} !-d
尝试添加以下规则:
RewriteRule ^$ _service.php?uri=/ [NC,L]
或其他什么
答案 1 :(得分:0)
您可能需要指定文档根目录才能找到文件或目录;我对这种模式的看法是:
RewriteEngine On
RewriteCond %{DOCUMENT_ROOT}%{SCRIPT_FILENAME} !-f
RewriteCond %{DOCUMENT_ROOT}%{SCRIPT_FILENAME} !-d
RewriteRule . /index.php [L,QSA,B]
在这种情况下,根页面(对我来说)是正确的(例如http://www.example.com/
)。注意,我在vhost.conf
而不是.htaccess
中有此内容。