我正在构建一个php框架,将所有流量重定向到ROOT / public / index.php,然后将url放入get请求中。我的问题是我的RewriteConds没有工作,并且正在接受文件和foldernames。
根目录中的
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ public/ [L]
RewriteRule (.*) public/$1 [L]
</IfModule>
<files .htaccess>
order allow,deny
deny from all
</files>
在公共目录中
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?url=$1 [PT,L]
</IfModule>
答案 0 :(得分:1)
[L]
标志告诉Apache在匹配规则后停止重定向。因此,假设您的ROOT文件夹首先出现,它将在重定向时运行并停止,这将导致第二个重定向无用。
解决问题有这个:
RewriteEngine on
RewriteRule ^$ public/
RewriteRule (.*) public/$1
答案 1 :(得分:0)
如果您想将现有文件和目录重定向到您的脚本:
公共目录中的
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ index.php?url=$1 [PT,L]
</IfModule>
我的2分提示:删除?url$1
部分,然后查看$_SERVER['REQUEST_URI']
中的内容。