Apache重写以向REQUEST_URI添加目录,而不是在运行wamp的localhost上工作

时间:2010-03-24 05:07:36

标签: apache mod-rewrite localhost

我正在Vista(Apache v2.2.11)上运行wamp并设置了项目,http://localhost/projectxprojectx的基本目录。现在,我想要

的请求
http://localhost/projectx/somepage/extra

将重写为

http://localhost/projectx/PUBLIC/somepage/extra

为此,我在C:\wamp\www\projectx\.htacces中有一个文件就是这么简单:

RewriteEngine On
RewriteBase /projectx
RewriteCond %{REQUEST_URI} !^/PUBLIC
RewriteRule ^(.*)$ /PUBLIC$1 [L]

我不能为我的生活弄清楚为什么这不起作用。我得到的错误是“在此服务器上找不到请求的URL / PUBLIC”。感谢。

2010年3月25日更新:

根据Michael的解决方案,我删除了绝对路径。出于某种原因,我还需要在Cond和Rule中添加一个最终斜杠:

RewriteEngine On
RewriteBase /projectx
RewriteCond %{REQUEST_URI} !^/PUBLIC/
RewriteRule ^(.*)$ PUBLIC/$1 [L]

2 个答案:

答案 0 :(得分:1)

尝试更改此内容:

RewriteRule ^(.*)$ /PUBLIC$1 [L]

对此:

RewriteRule ^(.*)$ PUBLIC$1 [L]

这可能只是问题的绝对路径。

您还需要将$1更改为基于零RewriteRule ^(.*)$ PUBLIC$0 [L]

答案 1 :(得分:0)

应该是

RewriteEngine On     
RewriteBase /projectx  
RewriteCond %{REQUEST_URI} !^/PUBLIC  
RewriteRule  ^(.*)(PUBLIC)(.*)$ /projectx/PUBLIC$3 [L]