【问题标题】:PHP .htaccess mod_rewritePHP .htaccess mod_rewrite
【发布时间】:2012-03-23 11:10:19
【问题描述】:

所以我想用mod_rewrite来改造:

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

进入

random_name.com/$user

($user是加在url上的php变量,所以可以是andy或rebecca之类的任何名字)

我的 .htaccess 代码是:

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

但由于某种原因,这似乎不起作用。我已经阅读了这些教程,但它们真的很复杂,看起来这可以解决问题,但事实并非如此。如果任何有 mod_rewrite 经验的人能给我一些指点,我将不胜感激。

【问题讨论】:

  • 试试不带前导/。它基本上隐含在 url 中,因此不包含在要匹配的 URI 中。
  • @MarcB 您应该将其发布为答案。它对read the docs 有帮助,请参阅最后一个示例,以及每个目录配置 (.htaccess) 与它上面的每个服务器配置有何不同。
  • 嘿,我试过了,它似乎不起作用 o.o.

标签: php mod-rewrite


【解决方案1】:

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

之后,您可以使用 mod rewrite 进行反向转换,这将使 /main.php?user=$user 脱离 /user 请求

【讨论】:

    【解决方案2】:

    试试这个:

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

    【讨论】:

    • RewriteRule (.*) main.php?user=$1 [NC,L] 怎么样?它不一样,但如果它有效,您可以改进正则表达式或在您的 PHP 代码中处理 $_GET['user'] 变量。
    • 嘿安德烈斯,只是一个简单的问题。我使用了 $_POST['user'] 而不是 $_GET['user'] 然后添加了一些 php 代码,例如 $user=$_POST['user'];和标题(“位置:main.php?user=$user”);。我想使用 $_GET 而不是 $_POST 吗?
    • 您发布的上述代码将我转移到 random_url.com/login.php。 login.php 是登录验证脚本,所以没有转入 main.php :O
    • 重写规则将您发送到 main.php,但 PHP 端可能有一些东西将您重定向到 login.php。
    • 回答您之前的评论,是的,您应该使用$_GET['user']$_REQUEST['user'],因为当您使用"main.php?user=$user" 时,您将信息作为GET 参数发送。 $_POST 在您将该信息发布到页面时使用(例如使用 HTML 表单或通过 AJAX 的 POST 请求等)。
    猜你喜欢
    • 1970-01-01
    • 2010-09-20
    • 1970-01-01
    • 2011-01-12
    • 2014-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多