【问题标题】:Htaccess issues - Redirecting from pretty url to php versionHtaccess 问题 - 从漂亮的 url 重定向到 php 版本
【发布时间】:2013-07-10 02:08:26
【问题描述】:

我不是新开发人员,并且已经使用 .htaccess 多年,但今天我完全陷入困境,不知道发生了什么。以下是我的完整 htaccess 文件:

Options All -Indexes

ReWriteEngine On

RewriteRule ^page/([a-zA-Z0-9_-]+)$ page.php?pageurl=$1
RewriteRule ^([a-zA-Z0-9_-]+)$ category.php?categoryurl=$1
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([0-9]+)-([a-zA-Z0-9_-]+)$ product.php?category=$1&subcategory=$2&productid=$3&producturl=$4


RewriteCond %{HTTP_HOST} www.website\.com$ [NC]
RewriteRule ^(.*)$ http://website.com/$1 [R=301,L]

website.com/category 应该将我带到它所做的类别页面,但由于某种原因,url 被更改,好像 htaccess 正在反向工作,我被发送到 website.com/category.php?categoryurl=类别。

这与其他的完全一样,我的产品页面应该是 website.com/category/subcategory/123-producturl 但它也会重定向:

website.com/product.php/category/123-producturl?category=category&subcategory=subcategory&productid=123&producturl=producturl

有人知道为什么会这样吗?

【问题讨论】:

    标签: php apache .htaccess


    【解决方案1】:

    试试这个,你还没有在 HTACCESS 中添加标志来结束行。

    Options All -Indexes
    
    ReWriteEngine On
    
    RewriteRule ^page/([a-zA-Z0-9_-]+)$ page.php?pageurl=$1 [L]
    RewriteRule ^([a-zA-Z0-9_-]+)$ category.php?categoryurl=$1 [L]
    RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([0-9]+)-([a-zA-Z0-9_-]+)$ product.php?category=$1&subcategory=$2&productid=$3&producturl=$4 [L]
    
    
    RewriteCond %{HTTP_HOST} www.website\.com$ [NC]
    RewriteRule ^(.*)$ http://website.com/$1 [R=301,L]
    

    【讨论】:

    • 注意 [L] 标志它告诉 htacces 结束规则,因此下一个规则将是新 url 的新规则
    • 不,Ahmed,不幸的是它仍在做同样的事情。谢谢你指出这一点,无论如何我真的应该一直使用它们。
    • 另一个建议是删除 RewriteCond %{HTTP_HOST} www.website\.com$ [NC] RewriteRule ^(.*)$ website.com/$1 [R=301,L] 看看它是什么确实.. 我认为它将内容重定向到 website.com/,,,,,,
    • 您也可以只从 RewriteRule 中删除 R=301。外部重定向迫使它使用新生成的 URL,所以这将显示在地址栏中。
    • 另一个建议,上面提到的两行应该在分类列表的三个规则之上..
    猜你喜欢
    • 2011-07-31
    • 1970-01-01
    • 2011-03-09
    • 2021-03-22
    • 1970-01-01
    • 2015-10-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多