htaccess-将除了文件夹和特定文件以外的所有内容重定向到index.php

时间:2019-02-11 05:16:10

标签: apache .htaccess

我为此战斗了太久了。我的PHP网站托管有.htaccess文件,用于重写和重定向。到目前为止,它一直运行良好。现在,我只想添加一个子文件夹/pp,该子文件夹不会重定向或重写其中的所有内容,基本上,我的.htaccess内容不应该触及它。

现在,当我转到mysite.com/pp/test.php(该文件确实存在)时,它将重定向到mysite.com/index

这是我目前拥有的:

RewriteEngine On

#remove www for all traffic
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

#prevent redirect of submit
RewriteRule ^/?submit$ submit.php [L]

#prevent redirect of paypal
RewriteRule ^/?admin$ admin.php [L]
RewriteRule ^/?testPPButton$ testPPButton.php [L]

# browser requests PHP
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^\ ]+)\.php
RewriteRule ^/?(.*)\.php$ /$1 [L,R=301]

# check to see if the request is for a PHP file:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/pp/.* [NC]  // this line is not working for some reason
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

Options -Indexes

更新的.htaccess:

    RewriteEngine On

# skip /pp/* from all rules below
RewriteRule ^pp(/.*)?$ - [L,NC]

#remove www for all traffic
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

#prevent redirect of submit
RewriteRule ^/?submit$ submit.php [L]

#prevent redirect of paypal
RewriteRule ^/?admin$ admin.php [L]
RewriteRule ^/?testPPButton$ testPPButton.php [L]

# browser requests PHP
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^\ ]+)\.php
RewriteRule ^/?(.*)\.php$ /$1 [L,R=301]

# check to see if the request is for a PHP file:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

Options -Indexes

1 个答案:

答案 0 :(得分:0)

只需在RewriteEngine On行下面添加此内容即可跳过pp/以及此文件夹下的所有内容:

RewriteEngine On

# skip /pp/* from all rules below
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\s/+pp[/?\s] [NC]
RewriteRule ^ - [L,NC]

# rest of your rules go below this