使用 WAMP 进行一些本地 PHP 开发。将所有请求路由到 index.php,除了 对位于文档根目录之外的父目录中的样式表和图像等 Assets 的请求。目录布局如下:
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]
关于php - 使用 mod_rewrite 重写对父目录的请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21831572/