2012-03-23 57 views
0

所以我想使用mod_rewrite改造:PHP的.htaccess mod_rewrite的

random_name.com/main.php?user=$user 

random_name.com/$user 

($的用户被添加到URL中的PHP变量,所以它可以是任何名称如安迪或丽贝卡,这样的名称)

和我对的.htaccess代码:

RewriteEngine on 
RewriteRule ^/([A-Za-z0-9-]+)/?$ main.php?id=$1 [NC,L] 

但是由于某种原因,这似乎不起作用。我已经阅读过这些教程,但它们非常复杂,看起来这样做会诀窍,但事实并非如此。如果有mod_rewrite经验的人会给我几个提示,我会很感激。

+2

尝试没有领先的'/'。它基本上隐含在一个url中,所以不包含在匹配的URI中。 – 2012-03-23 03:08:09

+0

@MarcB你应该将其作为答案发布。它有助于[阅读文档](http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewriterule),查看最后一个示例以及每个目录配置('.htaccess')的不同之处到它上面的每个服务器。 – Phil 2012-03-23 03:11:47

+0

嘿我试过这个,它似乎没有工作o.o. – r1nzler 2012-03-23 03:12:28

回答

1

的试试这个:

RewriteEngine on 
RewriteRule ^([A-Za-z0-9-]+)$ main.php?user=$1 [NC,L] 
+0

嘿安德烈斯,我也试过这个,它似乎没有工作。 :/ – r1nzler 2012-03-23 03:13:08

+0

'RewriteRule(。*)main.php?user = $ 1 [NC,L]'?这是不一样的,但是如果它能够工作,那么你可以改进正则表达式,或者在你的PHP代码中使用'$ _GET ['user']'变量。 – 2012-03-23 03:18:15

+0

嘿安德烈斯,只是一个简单的问题。我使用了$ _POST ['user']而不是$ _GET ['user'],然后添加了一些php代码,如$ user = $ _ POST ['user'];和标题(“Location:main.php?user = $ user”);.我想使用$ _GET而不是$ _POST? – r1nzler 2012-03-23 03:26:03

3

您不能使用mod重写将random_name.com/main.php?user=$user转换为random_name.com/$user。
您必须在您网站上的所有链接中手动执行此操作。

之后,你可以使用国防部重写的逆转变,这将使/main.php?user=$user/user要求