获取要在特定URL上忽略的重写规则

时间:2019-05-17 14:45:53

标签: .htaccess

我已经使用本地PHP从WordPress重新创建了一个站点,并在.htaccess中添加了某些ReWrite规则来模仿WP URL,但是我需要添加几个reWrite规则来美化几个URL。 / p>

我尝试创建2个目录,并且在每个目录中都有单独的.htaccess文件,但无济于事。

RewriteEngine On
RewriteBase /

# hide .php extension snippet

# To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1/ [R,L]

# add a trailing slash    
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !/$
RewriteRule . %{REQUEST_URI}/ [L,R=301]

# To internally forward /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*?)/?$ $1.php [L]

#Beautify new URL's
RewriteRule ^operating-areas/([^/]+) town.php?place=$1
RewriteRule ^operating-area/([^/]+)/([^/]+) keyword.php?place=$1&keyword=$2

www.domain.com/operating-areas/London

需要发送到

myPage.php?place =伦敦

然后

www.domain.com/operating-area/London/Finance

需要发送到

myOtherPage.php?place = London&keyword =财务

此刻,我收到“重定向过多”。

我在网上找到了用于WordPress样式的规则,因此,我对该主题的了解有限,阻止了我在特定情况下阻止他们进行射击。

1 个答案:

答案 0 :(得分:1)

您可以使用此代码块替换所有代码:

RewriteEngine On
RewriteBase /

# hide .php extension snippet

# To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1/ [R,L]

# add a trailing slash    
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !/$
RewriteRule . %{REQUEST_URI}/ [L,R=301]

#Beautify new URL's
RewriteRule ^operating-areas/([^/]+)/?$ town.php?place=$1 [L,QSA,NC]

RewriteRule ^operating-area/([^/]+)/([^/]+)/?$ keyword.php?place=$1&keyword=$2 [L,QSA,NC]

# To internally forward /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*?)/?$ $1.php [L]
模式末尾的

/?$允许末尾匹配可选的/。在添加规则.php之前保留此规则也很重要。