htaccess只重写一个文件夹

时间:2015-04-14 17:11:41

标签: php apache .htaccess mod-rewrite url-rewriting

我在root中有一个名为" pages"的文件夹,所有HTML页面都在那里,现在我有一个重写mod,从url删除文件夹并删除.php,所以www .website.com / pages / index.php,成为:www.website.com/index。

现在,我的问题是所有其他文件夹都需要在根目录中,当我尝试从这些文件夹中搜索文件时,我的重写mod在" pages"文件夹而不是根文件夹。

我只需要在"页面"文件夹,只在网址中使用。

.htacces文件:

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !\.[a-zA-Z0-9]+$ 
RewriteRule ^(.+?)/*$ $1.php [L,QSA]

#remove subfolder pages
RewriteCond %{REQUEST_URI} !(.*)pages 
RewriteRule ^(.*)$ pages/$1 [L]

对此有何帮助?

2 个答案:

答案 0 :(得分:1)

我找到了答案,我将重定向规则更改为此规则:

RedirectMatch 301 ^/subdir/$ http://www.mysample.com/

所以现在,它只是将没有特定子文件夹的URL重写到根目录,而不是触及其他子文件夹。

没有使用该规则的任何理由?

答案 1 :(得分:0)

您可以使用RewriteCond检查是否存在php文件,然后转发到pages/,如下所示:

Options +FollowSymLinks
RewriteEngine On
RewriteBase /GP/

RewriteCond %{DOCUMENT_ROOT}/GP/pages/$1\.php -f [NC]
RewriteRule ^(.+?)/?$ pages/$1.php [L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/GP/$1\.php -f [NC]
RewriteRule ^(.+?)/?$ $1.php [L]