htaccess 重写规则不起作用

htaccess RewriteRule not work

我的第一个问题希望能找到我问题的正确答案。

这里是:

我尝试将 http://mysite.it/home.php?pagina=ciao 转换为 http://mysite.it/ciao

我在我的 .htaccess 里面放了这个:

RewriteEngine On
RewriteRule ^home.php?(.*)$ 

它告诉我:http://mysite.it/?pagina=ciao

我知道 RewriteRule 有问题,但我不明白如何仅在 home.php?pagina= 之后选择 ciao,我的 PHP 页面上有这个 $get= @$_GET ['pagina'];

谢谢你的建议,希望能解决这个问题。

我相信你要找的是:

RewriteEngine On
RewriteRule ^([A-Za-z]+)$ /home.php?pagina=

我希望你没有做 :

require_once($get);

在该代码之后,因为那将是非常危险的...

您可以在 DOCUMENT_ROOT/.htaccess 文件中使用此代码:

RewriteEngine On
RewriteBase /

RewriteCond %{THE_REQUEST} /home\.php\?pagina=([^\s&]+) [NC]
RewriteRule ^ %1? [R=302,L,NE]

RewriteCond %{THE_REQUEST} /(home)\.php\s [NC]
RewriteRule ^ %1 [R=302,L]

RewriteRule ^(home)/?$ .php [L,NC]

# internal forward from pretty URL to actual one
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^.]+)/?$ home.php?pagina= [L,QSA]