php - 使用 mod_rewrite 重写对父目录的请求

标签 php css apache .htaccess mod-rewrite

使用 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/

相关文章:

php - AS3 RSAKey.sign() != PHP openssl_sign()

php - 在php mySQL数据库搜索查询中捕获整个单词而不是部分单词

javascript - JavaScript中=后面的“”给出了错误,因为Javascript中的html代码中存在“”

apache .htaccess 仅向经过身份验证的用户显示目录索引

php - 从 PHP 网站进行 Git checkout ?

javascript - TinyMCE集成-插件不会显示

php - jZebra - 原始命令入门

html - 移动时删除对象

javascript - 获取相对单位值

mysql - Laravel AH01630 : client denied by server configuration on Specific API routes