[英]htaccess and mod_rewrite, strange behavior
我对.htaccess和mod_rewrite规则有疑问。 当我在本地主机上安装PHP 7时(我使用WAMP),就发生了这种情况。 因此,我在我的域托管空间(已安装php7)上上传了所有文件,以进行测试以排除本地主机上的问题,但问题仍然相同。
我有两种语言:“ en ”和“ / it ”。 主语言是“ en”,位于根目录下,“ / it”位于文件夹中。
.htaccess规则在根目录上适用于“ en”
RewriteRule ^([^/]*)/([^/]*)\.html$ /altro/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>
但不适用于第二个lang:
RewriteRule ^([^/]*)/([^/]*)\.html$ /it/prodotti.php?cat_id=$1&n=$2 [L]
的PHP:
<a href="<?php echo $home_url."it/".$cat_id. "/". clean($sub_cat_home);?>.html"><?php echo ucfirst($sub_cat_home); ?></a>
生成的链接似乎还可以,但是当我单击它时出现404错误。 为什么? 我一直以这种方式使用,并且效果很好。
*************** 更新:我尝试用另一种方式解释 **************
通常,如果没有url_rewrite,我如何将其用于产品页面的url示例为:
https://www.example.com/product.php?cat_id=1$n=apples
现在使用htaccess:
RewriteRule ^([^/]*)/([^/]*)\.html$ /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>
在ROOT上有效: https://www.example.com/1/apples.html
: https://www.example.com/1/apples.html
现在,我必须对lang文件夹“ it”执行相同的操作。 所以我在IT文件夹中创建了一个新的htaccess文件。 没有url_rewrite:
https://www.example.com/it/product.php?cat_id=2$n=mele
现在使用htaccess:
RewriteRule ^([^/]*)/([^/]*)\.html$ /it/product.php?cat_id=$1&n=$2 [L]
PHP链接变为:
<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
: 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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.