我有以下.htaccess,它没有按预期工作:
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^example.bg$
RewriteRule (.*) http://www.example.bg/$1 [R=301,L]
RewriteCond %{REQUEST_URI} !^/sessiontest\.php$
RewriteCond %{REQUEST_URI} ^/login.* [OR]
RewriteCond %{REQUEST_URI} ^/admin.*$
RewriteRule ^(.*)$ travelpartner.php [L,NC]
RewriteCond %{REQUEST_URI} !^/sessiontest\.php$
RewriteCond %{REQUEST_URI} !^/login.*$
RewriteCond %{REQUEST_URI} !^/admin.*$
RewriteRule ^(.*)$ perla/$1 [L,NC]
我需要的是以下内容:
但是,现在发生的事情是我们总是看到perla子文件夹的内容,即使我打开exemple.bg/login
我在这里缺少什么?
答案 0 :(得分:2)
您可以使用以下规则
SomeFunction2
答案 1 :(得分:1)
根据您当前的规则,我获得了无限重定向循环:
一旦匹配规则No.2,并且请求/login
被重写为/travelpartner.php
,则重写的请求将被传递回URL解析引擎,并且规则集从一开始就再次运行。
这一次,它会匹配最后一段并被重写为/perla/travelpartner.php
,然后再次发回,并重写为/perla/perla/travelpartner.php
等......
如果请求以/perla
开头或/travelpartner.php
为<{1}},则修复将在最后一段中阻止重写:
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^example.bg$
RewriteRule (.*) http://www.example.bg/$1 [R=301,L]
RewriteCond %{REQUEST_URI} !^/sessiontest\.php$
RewriteCond %{REQUEST_URI} ^/login [OR]
RewriteCond %{REQUEST_URI} ^/admin
RewriteRule ^ travelpartner.php [L,NC]
RewriteCond %{REQUEST_URI} !^/sessiontest\.php$
RewriteCond %{REQUEST_URI} !^/login
RewriteCond %{REQUEST_URI} !^/admin
RewriteCond %{REQUEST_URI} !^/perla/
RewriteCond %{REQUEST_URI} !^/travelpartner\.php$
RewriteRule ^(.*)$ perla/$1 [L,NC]