Mod rewrite 两部分SEO友好URL

Mod rewrite 两部分SEO友好URL,mod-rewrite,seo,Mod Rewrite,Seo,我需要一个搜索引擎友好的小东西网址。 当前的url看起来像mysite.com/ny.php?c=[country]&t=23 “c”是一个县名,“t”是一个城镇的id号 我在前面的一个问题中找到了这个解决方案: <IfModule mod_rewrite.c> RewriteEngine on RewriteRule ^blog\/([0-9]+)\/.*$ /blog.php?post=$1 [L] </IfModule> 这将导致/blog/10/任何旧的文本位

我需要一个搜索引擎友好的小东西网址。 当前的url看起来像mysite.com/ny.php?c=[country]&t=23

“c”是一个县名,“t”是一个城镇的id号

我在前面的一个问题中找到了这个解决方案:

<IfModule mod_rewrite.c>
RewriteEngine on

RewriteRule ^blog\/([0-9]+)\/.*$ /blog.php?post=$1 [L]
</IfModule>
这将导致/blog/10/任何旧的文本位/from/blog.php?post=10

我怎么能用这样的东西,但也有县在里面。 那么mysite.com/ny.php?c=[country]&t=23将成为mysite.com/ny/[country]/23/town name?

给你:

RewriteRule ^(ny)/(.+)/(\d+)/(.+)/?$  /$1.php?c=$2&t=$3 [L,QSA]
更改查询字符串时,FYI QSA标志是必需的

即使在:

RewriteRule ^blog/([0-9]+)/.*$ /blog.php?post=$1 [L,QSA]

如果我理解你问的问题,你想要修改代码

我相信会是这样的:

<IfModule mod_rewrite.c>
RewriteEngine on

RewriteRule ^ny/(.*?)/([0-9]+)/.*$ ny.php?c=$1&t=$2 [L]
</IfModule>

注意:我很确定你不需要逃避前斜杠。如果ny.php位于主目录中,则它前面不需要正斜杠。

我在教程中从未见过QSA标志。你确定这是强制性的吗?@bozdoz如果你不知道,请不要评论!首先阅读:Apache DocsAnyway,+1表示建议QSA。@Tim你有错误吗?@Tim你有其他重写规则吗?因为纽约不应该是个问题。太好了,不可能是真的@bozdoz。它似乎不起作用。我是否可以显示它试图重定向到的URL?也就是说,我可能希望它转到ny.php/?c=Orange&t=5,而实际上它正试图重定向到ny.php/?c=Orange&t=5或类似于添加空格的内容。您是否收到错误?它把你带到了哪一页?有没有任何迹象表明它正在工作?可能会有一些问题。您的服务器可能要求您重写基本URL,因此您可能需要在打开引擎后包含RewriteBase/。此外,它的格式可能不正确。查看您的编辑程序是否可以检测到.htaccess文件的格式,和/或更改格式。感谢@bozdoz的回复。我知道mod_重写正在工作。我用一个维护页面的重定向对它进行了测试。当我输入cleaner url时,它只是404在我身上。所以你可以重写url,但这个特定的重写规则不起作用?请尝试通过输入以下代码行记录错误,这些代码可以在本网站上找到: