[英]Two rewrite rules in .htaccess
目前,我有以下代码从网址中删除.php
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
但我也想用URL中的/替换文件名中的字符_。 我已经尝试过这样做,但我只是遇到了一些奇怪的错误。 有人知道怎么做吗?
由于您声明请求的文件中只能包含零或一个下划线,因此应该可以:
RewriteCond %{REQUEST_URI} \.php$ [OR]
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME}\.php !-f
RewriteRule .* - [S=2]
RewriteRule ^(.*)$ $1.php
RewriteRule ^([^_]+)_([^_]+)$ $1/$2 [L]
若要仅在所有前面三个条件都为真时才应用这两个规则(而不仅仅是第一个),则您可以否定条件并随后应用跳过规则: [S=2]
表示“跳过以下两个规则”。
因此,如果所有这三个新条件都为假(因此它们的否定为真),则第一个重写会将.php
附加到所有请求中。 第二次重写将所有下划线更改为斜杠并停止重写。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.