2016-02-04 77 views
1

我正在使用干净URI的PHP脚本。用两个获取参数在PHP中清理URL

我的问题是,我有一个页面,首先不使用get参数,然后一个和最后两个。

.htaccess文件中的行目前看起来是这样的:

RewriteRule ^birthing-records/([^/]+)/?$ birthing-records.php?url=$1 [L,QSA,NC] 

但是如果我添加这样的第二个参数:

RewriteRule ^birthing-records/([^/]+)/([^/]+)/?$ birthing-records.php?url=$1&second=$2 [L,QSA,NC] 

脚本重定向我的错误页面。

我该如何设置?

对于这种情况,我需要两行.htaccess吗?

我通常会通过简单地调用另一个页面来解决这个问题,但我想保留我现在正在使用的确切URI,因为所有这些页面都在Google上编入索引。我真的很感激任何帮助。

+0

我想你是如何作用于你的网站,你不应该使用谷歌为借口不改变的URI或在几天之内,谷歌将重新索引你的页面或几个星期(取决于流量),如果Google使用更多内容描述性URI,则Google将从重新编制索引中受益012 – Martin

+0

_“我需要两行.htaccess中的这一情况吗?”_ - 当然您需要,如果你想捕捉诸如“birthing-records/123”之类的东西,因为你修改过的规则现在要求第二个斜杠组合。 (或者你也需要让第二个选项也是可选的。) – CBroe

回答

2

你需要为每个规则,否则每当你把一个参数它会打破。

RewriteRule ^birthing-records/([^/]+)/?$ birthing-records.php?url=$1 [QSA,NC] 
RewriteRule ^birthing-records/([^/]+)/([^/]+)/?$ birthing-records.php?url=$1&second=$2 [L,QSA,NC] 

感谢@马丁这张纸币:该的,因为L选项指示要运行的最后一条规则的第一个的L个选项已被删除(只有一个规则可以用L选项存在)另外,据我所知,它们各自单独工作,但如果你想接受1或2个参数,那么你需要两条规则。

您可以测试htaccess的东西在这里:http://htaccess.mwl.be/

+1

同样值得注意的是'L'ast标志已经从非最后的RewriteRule中删除,听起来很明显,但人们错过了那些细节... – Martin

+0

@asperon非常感谢你。这是完美的。 – Dennis