Php htaccess和mod_重写,奇怪的行为

Php htaccess和mod_重写,奇怪的行为,php,apache,.htaccess,Php,Apache,.htaccess,我对.htaccess和mod_重写规则有问题。当我在本地主机上安装PHP7(我使用WAMP)时,就会发生这种情况。因此,我上传了我的域托管空间(安装了php7)中的所有内容进行测试,以排除本地主机上的问题,但问题仍然是一样的 我有两种语言:“en”和“/it”。主语言是“en”,它在根目录上,/it“它在一个文件夹中 .htaccess规则适用于根目录上的“en” RewriteRule ^([^/]*)/([^/]*)\.html$ /altro/product.php?cat_id=$1&

我对.htaccess和mod_重写规则有问题。当我在本地主机上安装PHP7(我使用WAMP)时,就会发生这种情况。因此,我上传了我的域托管空间(安装了php7)中的所有内容进行测试,以排除本地主机上的问题,但问题仍然是一样的

我有两种语言:“en”和“/it”。主语言是“en”,它在根目录上,/it“它在一个文件夹中

.htaccess规则适用于根目录上的“en”

RewriteRule ^([^/]*)/([^/]*)\.html$ /altro/product.php?cat_id=$1&n=$2 [L]
php:

php:

现在使用htaccess:

RewriteRule ^([^/]*)/([^/]*)\.html$ /product.php?cat_id=$1&n=$2 [L]
RewriteRule ^([^/]*)/([^/]*)\.html$ /it/product.php?cat_id=$1&n=$2 [L]
PHP链接变成:

<a href="<?php echo $home_url.$cat_id. "/". clean($sub_cat_home);?>.html"><?php echo ucfirst($sub_cat_home); ?></a>
<a href="<?php echo $home_url."it/".$cat_id. "/". clean($sub_cat_home);?>.html"><?php echo ucfirst($sub_cat_home); ?></a>
现在使用htaccess:

RewriteRule ^([^/]*)/([^/]*)\.html$ /product.php?cat_id=$1&n=$2 [L]
RewriteRule ^([^/]*)/([^/]*)\.html$ /it/product.php?cat_id=$1&n=$2 [L]
PHP链接变成:

<a href="<?php echo $home_url.$cat_id. "/". clean($sub_cat_home);?>.html"><?php echo ucfirst($sub_cat_home); ?></a>
<a href="<?php echo $home_url."it/".$cat_id. "/". clean($sub_cat_home);?>.html"><?php echo ucfirst($sub_cat_home); ?></a>

生成的链接正确:
https://www.example.com/it/2/mele.html

但我无法访问该页面,因为404错误。我不明白

您可以在
it/.htaccess
中使用此规则:

RewriteEngine On

RewriteRule ^([^/]+)/([^/.]+)\.html$ product.php?cat_id=$1&n=$2 [L,QSA,NC]

这将重写
https://www.example.com/it/2/mele.html
https://www.example.com/it/product.php?cat_id=2&n=mele

这两条规则都试图匹配完全相同的内容。不知道你怎么会认为这是可行的,甚至没有意义。你能解释得更好吗?2个htaccess文件位于不同的位置folders@anubhava:我更新了post,与上面描述的完全相同。我找到了解决方案。进入/it/htaccess的路径错误。无论如何谢谢你!是的,我想知道,因为我在发布之前在Apache上彻底测试了这个解决方案。
RewriteEngine On

RewriteRule ^([^/]+)/([^/.]+)\.html$ product.php?cat_id=$1&n=$2 [L,QSA,NC]