【问题标题】:URL rewrite phrase issuesURL 重写短语问题
【发布时间】:2013-09-12 18:52:12
【问题描述】:

我有一个我想重写的 URL mysite.com/accounts?id=test 应该被定向到 mysite.com/accounts.php?id=test。我检查了我的mod_rewrite,它可以正常工作,因为其他页面可以正确写入。我目前正在尝试这个:

RewriteRule ^accounts?([.]+)$ accounts.php?$1 [NC,L]

这似乎不起作用。是因为正则表达式中的问号吗?我尝试用 \ 转义它,但它仍然不起作用。

任何帮助将不胜感激。

【问题讨论】:

  • 为什么不完全丢掉问号,让 id 成为子文件夹或页面。然后规则将类似于: RewriteRule ^accounts/([.]+).html$ accounts.php?id=$1
  • 也许我错了,但为什么 [] 之间的点?这和(.*)不一样吗?我认为RewriteRule ^accounts?(.*)$ accounts.php?$1 [NC,L] 应该可以工作。
  • @Rik,那种工作..现在至少找到 account.php 文件。 (它曾经给 404)。现在在第一行我写 die($_GET['id']) 只是为了测试,它返回空白。有什么想法吗?
  • @l3utterfly 我用解决方案创建了一个答案。

标签: php apache url mod-rewrite url-rewriting


【解决方案1】:

首先我认为([.]+)(.*) 相同。

其次,RewriteRule 已经从 URL 中删除了您的 query_string。
您可以通过%{QUERY_STRING} 访问它。

所以你的代码是

RewriteRule ^accounts?(.*)$ accounts.php?%{QUERY_STRING} [NC,L]

您可以创建一个accounts.php,使用以下内容进行测试:

<?php
echo "<pre>";
print_r($_SERVER);
exit();
// rest of your code
?>

然后检查您的[QUERY_STRING]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多