2010-08-08 24 views
0

目前我的.htaccess看起来像这样...我如何让.htaccess做我想做的事? :)(追加查询字符串URL)

Options +FollowSymLinks 
RewriteEngine On 
RewriteBase/

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 


RewriteRule ^(.*)$ $1.php [L,QSA] 

目前,它改变任何/xxx.php文件到/ XXX。这对搜索引擎优化很有用。不过,我还希望htaccess先生将某些URL转换为URL +查询字符串。例如,当用户进入

/特定/ somerandominfo

然后somerandominfo传递给specific.php文件。我通常使用重写来完成这项工作并没有问题,但是由于我重新编写了奇怪的程序,我无法弄清楚如何去做。

例如,如果我添加

RewriteRule ^specific/([^/]+)$ /specific.php?somerandominfo=$1 [NC] 

我的.htaccess,然后打了/特定/ somerandominfo只是提供了我一个大胖子500内部服务错误。

任何来自你的apache大师的帮助都会是如此的如此酷。

谢谢!

p.s.任何人都想要抛出他们喜欢的任何其他酷SEO技巧?我会烤饼干。

回答

1

由于您的规则正在创建无限循环,因此您将收到500错误。检查Apache的错误日志,看看它是否属实。所以你应该正确地设计你的规则。也许这样的:

RewriteRule ^([^/]*)$ $1.php [L] 
RewriteRule ^(.*)/(.*)$ $1.php?var=$2 [L] 
+0

他发布的规则无法创建无限循环。虽然这可能是事实(他没有发布他使用的真正规则)。 – Artefacto 2010-08-08 10:05:48

+0

其实他们是。我已经在我的xampp上测试过它们。 – ehpc 2010-08-08 10:44:11

+0

嘿那里,我发布的规则几乎是我使用的实际规则的CC。我只是将.php文件名从“workouts”更改为特定,并将$ _GET变量从“id”更改为“somerandominfo”:) 另外,ehpc是否会创建一个案例,其中我将转到的任何文件将被视为一个var?例如,如果我有一个名为test的文件夹,并且该文件夹是first.php,那么这组重写将尝试处理/测试/首先尝试发送var = first到test.php?对不起,如果这是一个复杂的问题。 :) 谢谢你的帮助! – Dylan 2010-08-08 16:47:47

0
RewriteRule ^specific/([^/]+)$ /specific.php?somerandominfo=$1 [NC] 

这是最正确的。我只是添加B标志,就像这样:

RewriteRule ^specific/([^/]+)$ /specific.php?somerandominfo=$1 [NC,B] 

这将导致捕获组$1是正确转义的查询字符串中使用。请注意,您仍然可以使用QSA来保留原始请求中使用的查询参数(除somerandominfo之外)。

也许你会想发布你的实际RewriteRule。

+0

嗨艺术, 实际规则我是用看起来像...... 重写规则^锻炼/([^ /] +)$ /workouts.php?id=$1 [NC ] 当我尝试访问/锻炼/ 8,例如,我确实收到500. 非常感谢您的帮助! – Dylan 2010-08-08 16:50:30

相关问题