【问题标题】:Mod rewrite wildcard subdomain redirection issueMod重写通配符子域重定向问题
【发布时间】:2014-12-12 21:57:54
【问题描述】:

我面临的问题是我有一个通配符域,我想将所有子域重定向到特定的 url,即

http://subdomain.domain.com --> http://www.domain.com/pagination.php?id=subdomain&page=1

如果

http://subdomain.domain.com/page-2 --> http://www.domain.com/pagination.php?id=subdomain&page=2

如果给出了产品ID,即

http://subdomain.domain.com/some_product_name-123 --> http://www.domain.com/productview.php?id=123

我的 htaccess 文件是

RewriteCond %{http_host} .
RewriteCond %{http_host} !^www.pricesinpakistan.com.pk [NC]
RewriteCond %{http_host} ^([^.]+)\.pricesinpakistan.com.pk [NC]
RewriteRule page-^([^/]*)$ pagination.php?id=%1&page=$2 [L]
RewriteRule ^(.*)$ pagination.php?id=%1&page=1 [L]

上述规则不符合页面规则,所有重定向都在最后一条规则上完成,id 为空字符串。

【问题讨论】:

    标签: php apache .htaccess mod-rewrite redirect


    【解决方案1】:
    • RewriteCond 只适用于下一个RewriteRule
    • 您不能在正则表达式模式的中间使用锚点^
    • 要匹配着陆页,您需要使用 ^$ 作为 URI 模式。

    改用这条规则:

    RewriteCond %{http_host} !^www\.pricesinpakistan\.com\.pk$ [NC]
    RewriteCond %{http_host} ^([^.]+)\.pricesinpakistan\.com\.pk$ [NC]
    RewriteRule ^page-(\d+)/?$ pagination.php?id=%1&page=$1 [NC,L,QSA]
    
    RewriteCond %{http_host} !^www\.pricesinpakistan\.com\.pk$ [NC]
    RewriteCond %{http_host} ^([^.]+)\.pricesinpakistan\.com\.pk$ [NC]
    RewriteRule ^$ pagination.php?id=%1&page=1 [L,QSA]
    
    RewriteCond %{http_host} !^www\.pricesinpakistan\.com\.pk$ [NC]
    RewriteCond %{http_host} ^([^.]+)\.pricesinpakistan\.com\.pk$ [NC]
    RewriteRule ^(\w+)-(\d+)/?$ productview.php?catname=%1&productname=$1&productid=$2 [NC,L,QSA]
    

    【讨论】:

    • 让我转发到第 1 页 :(
    • 谢谢,它有效,现在只剩下一条规则 http://([A-Za-z0-9]+).pricesinpakistan.com.pk/([A-Za-z0-9_ ]+)-([0-9]+)$ 转发到 productview.php?catname=%1&productname=$1&productid=$2 如果您也能指导我,我将不胜感激。
    • 现在检查更新的代码。我在手机上,所以我的回答中可能有一些小错别字。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-31
    • 2020-09-27
    • 1970-01-01
    • 2018-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多