[英]Rewriting a request to a parent directory with mod_rewrite
使用WAMP进行一些本地PHP开发。 将所有请求路由到index.php, 但对样式表和图像之类的资产的请求除外,这些请求位于文档根目录之外的父目录中。 目录布局如下:
C:\WAMP\www\
↳ mySite
↳ public
↳ .htaccess
↳ index.php
↳ assets
↳ style
↳ desktop.css
的.htaccess
RewriteEngine on
RewriteBase /mySite/
RewriteCond %{REQUEST_URI} \.css$ [NC]
RewriteRule ^(.*)$ assets/$1 [L]
RewriteCond %{REQUEST_URI} !-f
RewriteCond %{REQUEST_URI} !-d
RewriteRule ^(.+)\/?$ index.php?url=$1 [L,QSA]
mySite.conf
Alias /mySite/ "C:/WAMP/www/mySite/public/"
<Directory "C:/WAMP/www/mySite/public/">
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order allow,deny
Allow from all
</Directory>
结果
localhost/mySite/
-按预期返回index.php
localhost/mySite/style/desktop.css
返回内部服务器错误
我错过了什么?
谢谢
这可能是由于循环。
尝试使用以下代码来解决此问题:
RewriteEngine on
RewriteBase /mySite/
RewriteRule ^((?!assets/).+?\.css)$ assets/$1 [L,NC]
RewriteCond %{REQUEST_URI} !-f
RewriteCond %{REQUEST_URI} !-d
RewriteRule ^(.+)\/?$ index.php?url=$1 [L,QSA]
正如下面的Anubhava在另一个问题中回答的那样:
只是为了澄清任何网站都无法访问其DOCUMENT_ROOT文件夹级别以上的文件。
因此,我应该将文档根目录设置为mySite/
,并将所有请求都路由到public/
以实现与公开文档根目录相同的安全性。
既然assets/
位于文档根目录下,我就可以在OP中根据需要将资产请求重写到此目录中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.