我的.htaccess文件中有一个代码..它将每个.php重定向到非php。我希望它只指向一个php文件并且不重定向其余的..例如我希望abc.php是abc但是bcd.php保持为bcd.php ..我怎样才能修改这个脚本来获得这个结果?感谢。
RewriteEngine on
#Redirect non-php to php and stop futher processing
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [L]
#redirect .php to non-php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^(.*)\.php$ $1 [R=301,L]
答案 0 :(得分:2)
此代码适用于您:
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+(abc)\.php[?\s] [NC]
RewriteRule ^ %1 [R=301,L]
#Redirect non-php to php and stop futher processing
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [L]
在此处使用%{THE_REQUEST}
很重要,它表示Apache收到的原始HTTP请求,以避免循环。与使用%{THE_REQUEST}
的URI模式的情况相反,RewriteRule
不会被各种重写规则重写。
答案 1 :(得分:0)
将规则与异常和L标志放在常规RewriteRule:
之前RewriteEngine on
#redirect abc.php to abc
RewriteRule ^abc\.php$ abc [R=301,L]
#Redirect non-php to php and stop futher processing
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteCond %{REQUEST_URI} ! abc$
RewriteRule ^(.*)$ $1.php [L]