Html .htaccess中的两个重写规则

Html .htaccess中的两个重写规则,html,regex,.htaccess,web-applications,Html,Regex,.htaccess,Web Applications,目前,我有以下代码要从url中删除.php RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}\.php -f RewriteRule ^(.*)$ $1.php 但是我还想用URL中的/替换文件名中的字符uu。 我试过这样做,但我只是得到一些奇怪的错误。 有人知道怎么做吗?因为您声明请求的文件中只能有零个或一个下划线,所以应该可以: RewriteCond %{REQUEST

目前,我有以下代码要从url中删除.php

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
但是我还想用URL中的/替换文件名中的字符uu。 我试过这样做,但我只是得到一些奇怪的错误。
有人知道怎么做吗?

因为您声明请求的文件中只能有零个或一个下划线,所以应该可以:

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]
表示“跳过以下两条规则”


因此,如果新的三个条件都为false(因此它们的否定为true),则第一次重写会将
.php
附加到所有请求。第二次重写将所有下划线更改为斜杠并停止重写。

文件名中可以出现多少个字符?最多只能出现一个字符。我有一个名为blog\u test-blog.php的文件,它将从url/blog/test blog正确打开,/images中的图像将无法正确打开,因为没有像/blog/images这样的目录,只有/images