目前我有以下代码从网址中删除.php
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
但我还想用URL中的/替换文件名中的字符_。 我试过这样做,但我只是得到了一些奇怪的错误。 有谁知道怎么做?
答案 0 :(得分:0)
由于您声明只有零个或一个下划线可能是所请求文件的一部分,因此这应该有效:
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]
表示“跳过以下内容2条规则“。
因此,如果所有新的三个条件都为假(因此它们的否定为真),则第一次重写将.php
附加到所有请求。第二次重写将所有下划线更改为斜线并停止重写。