【问题标题】:htaccess url variable issueshtaccess url变量问题
【发布时间】:2019-07-28 02:04:12
【问题描述】:

所以我遇到了一个小问题。

我将 index.php 页面作为存储在数据库中的所有页面数据的基础页面。我正在使用这个 htaccess 重写我的所有页面,不包括博客中的帖子。

RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f

#ALL STANDARD PAGES
RewriteRule (.*) index.php [QSA,NC,L]

#TRIED ALL THESE, NO LUCK
#RewriteRule (.*) index.php?%{QUERY_STRING} [L]
#RewriteRule ^.+$ /index.php [L]
#RewriteRule ^((?!index\.php).+)$ /index.php [L]

#ALL SPECIAL POSTING PAGES
RewriteRule    ^/posts/([0-9]+)/?$    view_post.php?id=$1    [NC,L]

这适用于我在 url 上没有变量的任何页面。

例子:

www.mysite.com/home | | www.mysite.com/contact

所有这些都完美加载。但是,如果我添加任何变量,页面会因 404 崩溃。

例子:

www.mysite.com/contact?email=sent

我不太确定该怎么做,我尝试在网上搜索指南来教我正确的语法,并在谷歌上搜索其他人是否有同样的问题,到目前为止还没有任何运气。

请帮忙。

【问题讨论】:

  • 你使用QSA标志了吗?
  • @Abhishekgurjar 我刚刚试过这个。但它仍然没有工作。 RewriteRule (.*) index.php [QSA,L]
  • 好吧,试试这条规则^/posts/([0-9]+)/?$,而不是index.php
  • 我遇到的问题是主页,而不是帖子页面。 ://
  • 您的规则 RewriteRule (.*) index.php [QSA,NC,L] 应该可以工作(尽管您不需要捕获组,因为您没有使用它)。尝试在 Apache 错误日志中跟踪重写,您可以在 httpd.conf 中使用 LogLevel alert rewrite:trace6 打开日志记录。这将向您显示当有查询字符串时 apache 正在重写的确切路径。一个单独的问题是您需要将 ^/posts 规则放在 index.php 规则之前,否则重写将永远无法到达 /posts。

标签: php .htaccess mod-rewrite


【解决方案1】:

试试这个,请注释掉之前的检查条件,我假设你正在将这些请求 www.mysite.com/contact 重写到 index.php 页面。

RewriteEngine on
RewriteCond %{THE_REQUEST} ^(.*)$
RewriteRule ^ index.php [L]

【讨论】:

    猜你喜欢
    • 2012-12-08
    • 1970-01-01
    • 2021-03-08
    • 2011-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-19
    相关资源
    最近更新 更多