【发布时间】: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