所以,我正在尝试编写一个htaccess文件,它会将所有内容重写回根索引文件并在其后添加一个查询,例如
example.com/cheese/
将转到example.com/index.php?cheese/
example.com/cheese
将转到example.com/index.php?cheese
example.com/bob/fred
将转发example.com/index.php?bob/fred
根据需要进入多层,有人有建议吗?
目前正在尝试此操作,但它无效:
RewriteEngine on
RewriteRule ^(.*)/?$ index.php?$1
我知道它无法正常工作,因为我正在使用以下内容对其进行测试,但查询输出不正确。
<?php
$page = $_SERVER['QUERY_STRING'];
echo $page;
?>
答案 0 :(得分:0)
您可以在DOCUMENT_ROOT/.htaccess
文件中使用此规则:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)$ /index.php?$1 [L,QSA]
RewriteCond %{REQUEST_FILENAME} !-f
将避免循环并跳过有效文件,如css,js图像被重写为index.php
。
将查询字符串作为:
访问$_SERVER["QUERY_STRING"]
答案 1 :(得分:0)
首先,必须启用mod_rewrite
。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule /(.*) index.php?$1
</IfModule>
但如果使用$_SERVER['QUERY_STRING']
是必要的,我建议使用:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule . index.php
</IfModule>
然后从$_SERVER['REQUEST_URI']
检索网址,因为您的解决方案会中断每个GET请求。