【发布时间】:2016-05-01 02:36:51
【问题描述】:
我通过 index.php 发送每个请求,但我的博客子目录中的页面除外。我已经能够在我的父文件夹中使用 mod_rewrite 来做到这一点,并且;
RewriteCond %{REQUEST_URI} !^/blog
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
]
但是,如果请求具有以下形式,我也想将请求发送到我的博客文件夹:
文档/一些文件。
我试过了:
RewriteRule ^/documentation/(.+)$ https://www.some_domain.com/blog/documentation/$1
但它看起来在这种情况下我的请求没有发送到博客文件夹。我的完整代码如下:
RewriteEngine On
#redirect to index.php as appropriate
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^/documentation/(.+)$ https://www.some_domain.com/blog/documentation/$1
RewriteCond %{REQUEST_URI} !^/blog
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
编辑:
我在下面使用了@Rijul 建议的稍微修改的版本,在将 RewriteRule 移到 RewriteCond 之前,它可以按我希望的那样工作。换句话说,对文档的重写执行对博客子文件夹的重写。而且,所有其他请求都通过我的 index.php 文件。在这一点上,我想了解原因。
RewriteEngine On
RewriteRule ^documentation/?(.*)$ /blog/documentation/$1 [R=301,L]
#redirect to index.php as appropriate
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
【问题讨论】:
标签: mod-rewrite