【发布时间】:2011-12-14 00:50:29
【问题描述】:
问题是:我有一个很长的 htaccess,做了很多重定向(它是一个商店网站,它会将 STOREID/p/PRODUCTID 之类的东西重定向到 productdetail.php?s=STOREID&p=PRODUCTID 等。我想要允许特定商店拥有直接域名的能力。因此,您转到 examplestore.com,它会访问 mysite.com/stores,然后 htaccess 将其重写为 mysite.com/stores/STOREID。我已经完成了这项工作,除了一方面:
我可以让主页出现,或者产品/搜索/等页面出现,但不能同时出现。
这是我的 htaccess 的相关部分:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www\.)?EXAMPLESTOREDOMAIN\.com$ [NC]
RewriteRule /?$ /6804/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /6804/$1 [QSA]
稍后在 htaccess 中,它适用于 /p/ 之类的东西,所有这些都很好用。 6804 是商店 id,htaccess 稍后会抓取它并将其作为 url 变量转储到 php 中。
我可以删除第一条规则,然后其他一切正常。或者我可以有第一条规则,其他的都行不通。规则的顺序也没有关系。
以下是应该发生的情况: http://EXAMPLESTOREDOMAIN.com --> mystore.com/stores/6804/ --> mystore.com/stores/storeindex.php?s=6804 http://EXAMPLESTOREDOMAIN.com/p/22/ --> mystore.com/stores/6804/p/22 --> mystore.com/stores/productdetail.php?s=6804&p=22
第二个重写步骤效果很好。第一个,不多。而且我会使用第二条规则中的每一条进行设置,以单独在每个域上工作,但我不想这样做,并且如果我们拥有几百个商店域,我不想拥有那么大的 htaccess...
提前致谢!
【问题讨论】:
标签: apache mod-rewrite url-rewriting