【发布时间】:2023-03-03 05:49:21
【问题描述】:
我被困在了一些看似愚蠢的事情上——被 .htaccess RewriteRule 困住了。
问题:
我正在尝试将所有进入“项目”网站的“不存在”页面的流量作为参数“q”重定向到 index.php。例如,假设用户访问了以下 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
为了解决这个问题我已经做了什么:
在项目目录中放置了一个 .htaccess 文件 >> http://localhost/project/ >> 试图将所有流量转移到公共目录。这个规则看起来像这样......
<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]。
有人有解决办法吗?
【问题讨论】:
-
此外,它没有在上面列出(所以不确定这是否反映在您的代码中)但
RewriteEngine on需要在任何Rewrite*上方声明(除非它在 apache 配置中显式打开) -
谢谢乔……我错过了它……但我确信它在我的开发机器上是“开启”的……
-
不知何故这对我不起作用......