Php GET与.htaccess clean url不兼容

Php GET与.htaccess clean url不兼容,php,apache,.htaccess,mod-rewrite,Php,Apache,.htaccess,Mod Rewrite,我正在制作一个配置文件系统,并且使用localhost/profiles?user=ryr11工作,我尝试使用 RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([^\.]+)$ $1.php [NC,L] RewriteRule ^profiles/(.+)$ profiles.php?user=$1 [L,QSA] 因此,我可以使用localhost/profiles/ryr11,但当我这样做时,我不再得

我正在制作一个配置文件系统,并且使用localhost/profiles?user=ryr11工作,我尝试使用

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]

RewriteRule ^profiles/(.+)$ profiles.php?user=$1 [L,QSA]
因此,我可以使用localhost/profiles/ryr11,但当我这样做时,我不再得到404错误,但使用$\u get['user']不再有效。

尝试以下方法:

RewriteEngine On

RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteCond %{SCRIPT_FILENAME} !-f

RewriteRule ^profiles/([a-zA-Z0-9_.-]+)/?$ profiles.php?user=$1 [L,NC,QSA]

遵守以下规则:

Options  -MultiViews
RewriteEngine On
RewriteBase /

RewriteRule ^profiles/(.+)$ profiles.php?user=$1 [L,QSA,NC]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1.php -f [NC]
RewriteRule ^(.+?)/?$ $1.php [NC,L]

您需要再次解码url才能从中删除

用这个

$user = $_GET['user'];
$postTitle = str_replace("-", " ", $user);
这应该会再次起作用。

重新排列规则。将^profiles/+$规则置于重写条件之前。