0

我的 htaccess 文件包含

RewriteEngine on
RewriteCond %{THE_REQUEST} ^[A-Z]+\s([^\s]+)\.php\s
RewriteRule .* %1.html [R=301,L]
RewriteRule ^(.*)\.html$ $1.php
RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule ^.*$ - [L]
RewriteRule ^index.php$ http://%{http_host}/ver1 [R=301,L]

它工作正常

但我的表单动作需要指向一个 .php 文件

如何防止 form.php 被重写?

我不希望文件 form.php 被重写为 form.html

4

1 回答 1

0

在第一行之后立即尝试此代码:

RewriteCond %{REQUEST_URI} !^(.*)form.php(.*)$

此代码检查请求字符串中是否有任何“form.php”,如果有,则仅中止下一个RewriteRule。

编辑:好的,我的错,我一个接一个地误读了 2 条重写规则。我将您的代码格式化为更好的格式和描述。所以请尝试这个:

RewriteEngine on

# 1st rule
RewriteCond %{REQUEST_URI} !^(.*)form.php(.*)$
RewriteCond %{THE_REQUEST} ^[A-Z]+\s([^\s]+)\.php\s
RewriteRule .* %1.html [R=301,L]

# 2nd rule
RewriteCond %{REQUEST_URI} !^(.*)form.html(.*)$
RewriteRule ^(.*)\.html$ $1.php

# 3rd rule
RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule ^.*$ - [L]

# 4th rule
RewriteRule ^index.php$ http://%{http_host}/ver1 [R=301,L]
于 2012-09-06T12:29:55.883 回答