目前我有这样的网址
http://<client_name>.website.com/index.php?function_name&cat=32
我想进行设置,以便我们的营销人员可以发布网址
http://<client_name>.website.com/<parent_category>/<category>
“cat = XX”将仅生成最后一个<category>
。但营销部门希望在其广告系列中使用父类别。目前我们通过html根目录中的index.php传递所有URL(稍后这将变得很重要)。
我尝试了几种解决方案,包括:
mod_rewrite - 这种方法的问题在于它变成了一个巨大的.htaccess文件,因为我们需要为每个类别编写规则。
RewriteMap - 由于我可以查询数据库以构建输出的地图文件,因此非常接近。但是,我已经知道我们无法访问httpd.conf。
index.php - 我已尝试通过我们的index.php文件运行所有内容,但该文件无法保证浏览器中的URL对SEO有用。
我希望有人有另一个可能有所帮助的想法,我真的很感激。如果您在网络上引用了一些有助于实现这一目标的内容。
答案 0 :(得分:6)
为什么不使用mod_rewrite将所有请求路由到index.php并使用PHP编写路由逻辑,这似乎比编写不同的重写规则更可靠?
简单.htaccess就是这个
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?request=$1 [QSA,L]
index.php中的几行PHP代码
$client_name = strtok($_SERVER['HTTP_HOST'],".");
list ($cat,$subcat) = explode("/",trim($_GET['request'],"/"));
答案 1 :(得分:1)
除了Col.Srapnel的答案之外,至少要减少选择:
RewriteRule ^/([-a-zA-Z0-9_]+)/([0-9]+)$ index.php?function_name=$1&cat=$2 [L,QSA] # domain.com/cat_name/23 is sent to the server as domain.com/index.php?function_name=cat_name&cat=23