繁体   English   中英

htaccess和mod_rewrite,奇怪的行为

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM