我被困在一些看似愚蠢的事情上——被.htaccess RewriteRule 困住了。
问题:
我正在尝试将来自“项目”网站的“不存在”页面的所有流量重定向到 index.php 作为参数“q”。例如,假设用户访问了以下 URL:
http://localhost/project/products/
现在显然没有名为 products 的目录或文件,因此,
对于上面的 HTTP 请求,我想将其翻译为:
http://localhost/project/public/index.php?q=products
设置:
服务器 - 带有 XAMPP 目录结构的 Apache 5.3.x:htdocs/project/public/index.php
为了解决这个问题,我已经做了什么:
在项目目录 >> http://localhost/project/
>> 中放置了一个 .htaccess 文件,试图将所有流量转移到公共目录。规则看起来像这样......
<IfModule mod_rewrite.c>
RewriteRule ^$ public/ [L]
</IfModule>
以上工作正常,所有用户都被重定向到 index.php 页面。
使用以下代码将另一个 .htaccess 文件放在公共目录中:
<IfModule mode_rewrite.c>
RewriteCond....
RewriteCond....
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
</IfModule>
现在,如果用户在栏中键入 URL:http://localhost/project/hi
我希望它被翻译为http://localhost/project/public/index.php?q=hi
相反,它给出了 404 错误。另请注意,被翻译到 Apache 的实际请求不应在 URL 栏中反映为永久重定向 [301]。
有人有解决方案吗?