【发布时间】:2016-04-09 05:38:24
【问题描述】:
我正在尝试将所有具有 /__/ 的 url 重定向到 /public/assets/ 并让它在 .htaccess 中工作,但在 httpd.conf 中不能全局工作
它应该做的是重写:
http://example.com/__/test.css
到
http://example.com/public/assets/test.css
到目前为止,我已经为 .htaccess 工作:
RewriteRule ^(.*)/?__/(.*)$ $1/public/assets/$2 [L]
(可能写得不好,但这是我设法使它工作的唯一方法)。但是,如果我把它放在 httpd.conf 中,它根本不起作用。我试着调整它,试着把它放在<VirtualHost 127.0.0.1> 和<Directory "c:/DEV/wamp/www/"> 里面,但它仍然不起作用。现在已经浪费了 3 个小时的时间,并在 Stackoverflow/论坛上找到了很多示例,但奇怪的是它们都不适合我..
编辑: 这是我尝试过的两个块示例。 [R] 用于验证规则是否有效并重定向:
<VirtualHost 127.0.0.1>
DocumentRoot "c:/DEV/wamp/www/"
<Directory "c:/DEV/wamp/www/">
Allow From All
RewriteEngine On
RewriteRule ^/(.*)?__/(.*)$ /$1public/assets/$2 [R]
</Directory>
</VirtualHost>
还有这个:
<Directory "c:/DEV/wamp/www/">
Allow From All
RewriteEngine On
RewriteRule ^/(.*)?__/(.*)$ /$1public/assets/$2 [R]
</Directory>
EDIT2: 尝试从建议的答案中选择编辑,仍然无法在服务器上找到 css 文件。
<Directory "c:/DEV/wamp/www/">
Allow From All
RewriteEngine On
RewriteRule ^__/(.*)$ public/assets/$1 [L]
</Directory>
【问题讨论】:
-
你说“不起作用”——它实际上什么也没做?您的 .htaccess 文件是否位于
c:/DEV/wamp/www/.htaccess?如果是这样,那么相应的<Directory>部分应该 工作。也许将您的 VirtualHost 块添加到您的问题中。 -
是的,抱歉.. 不起作用 = 规则被完全忽略。是的,.htaccess 在那里:“c:/DEV/wamp/www/.htaccess”。我会将我尝试过的块添加到我的问题中
标签: apache .htaccess mod-rewrite httpd.conf