我的 .htaccess 中的 RewriteRule 命令不起作用

Posted

技术标签:

【中文标题】我的 .htaccess 中的 RewriteRule 命令不起作用【英文标题】:RewriteRule command in my .htaccess doesn't work 【发布时间】:2013-01-20 13:32:49 【问题描述】:

我最近买了一个 php 网站,它使用 .htaccess 中的 RewriteRule 来重定向 url,例如 domain.com/login 被重定向到 domain.com/login.php 或 /register 到 /register.php 等等。这些是我的 .htaccess 文件的内容:

options -multiviews
<IfModule mod_rewrite.c>
RewriteEngine On 
RewriteBase /
RewriteRule ^users$ users.php
RewriteRule ^login$ login.php
RewriteRule ^logout$ logout.php
RewriteRule ^log_out$ log_out.php
RewriteRule ^forgot$ forgot.php
RewriteRule ^manage_gigs$ manage_gigs.php
RewriteRule ^manage_orders$ manage_orders.php
RewriteRule ^new$ new.php
RewriteRule ^suggestions$ index.php
RewriteRule ^search$ search.php
RewriteRule ^edit$ edit.php
RewriteRule ^edit_extra$ edit_extra.php
RewriteRule ^bookmark$ bookmark.php
RewriteRule ^bookmarks$ bookmarks.php
RewriteRule ^settings$ settings.php
RewriteRule ^balance$ balance.php
RewriteRule ^order$ order.php
RewriteRule ^orders$ orders.php
RewriteRule ^inbox$ inbox.php
RewriteRule ^conversations/([^/.]*)?$ conversations.php?u=$1&%QUERY_STRING
RewriteRule ^upload$ upload.php
RewriteRule ^check_new$ check_new.php
RewriteRule ^spam$ spam.php
RewriteRule ^thank_you$ thank_you.php
RewriteRule ^track$ track.php
RewriteRule ^send_track$ send_track.php
RewriteRule ^confirmemail$ confirmemail.php
RewriteRule ^rss$ rss.php
RewriteRule ^terms_of_service$ terms_of_service.php
RewriteRule ^privacy_policy$ privacy_policy.php
RewriteRule ^about$ about.php
RewriteRule ^contact$ contact.php
RewriteRule ^advertising$ advertising.php
RewriteRule ^signup$ signup.php
RewriteRule ^forgotpassword$ forgotpassword.php
RewriteRule ^feature$ feature.php
RewriteRule ^feature_success$ feature_success.php
RewriteRule ^purchases$ purchases.php
RewriteRule ^suggested$ suggested.php
RewriteRule ^mysuggestions$ mysuggestions.php
RewriteRule ^myreferrals$ myreferrals.php
RewriteRule ^levels$ levels.php
RewriteRule ^categories/([^/.]+)?$ cat.php?cid=$1&%QUERY_STRING
RewriteRule ^user/([^/.]+)?$ user.php?uname=$1&%QUERY_STRING
RewriteRule ^tags/([^/.]+)/([^/.]+)?$ tags.php?cid=$1&tag=$2&%QUERY_STRING
RewriteRule ^([^/.]+)/([^/.]+)/([^/.]*)?$ view.php?title=$1&id=$2&%QUERY_STRING
</IfModule>
<IfModule mod_security.c> 
   # Turn off mod_security filtering. 
   SecFilterEngine Off 

   # The below probably isn't needed, 
   # but better safe than sorry. 
   SecFilterScanPOST Off 
</IfModule>

但单击任何链接会导致 404 错误(找不到页面),因为未重定向 url。我正在使用cpanel。我是否必须激活某些功能才能使其工作?这里可能有什么问题?谢谢。

【问题讨论】:

IS LoadModule rewrite_module modules/mod_rewrite.so 激活了吗? 你好,你能告诉我如何检查它,如果没有,如何激活它?谢谢! 使用 mod_rewrite 效率低下,对于大多数重定向,您可以只使用 Redirect 指令。重定向 [Original] [Target] 例如:重定向 /users users.php 按照您说的操作后,我收到 500 内部服务器错误!它说(服务器遇到内部错误或配置错误,无法完成您的请求。)有什么问题?谢谢。 查看 apache 错误日志,它应该会给你一些东西。 【参考方案1】:

您似乎没有启用重写规则。

    打开httpd.conf

    找到提到mod_rewrite.so的那一行;

    去掉前面的标签(#);

    重新启动您的网络服务器;

【讨论】:

你好,我使用 cpanel,但我是新手。你能告诉我在哪里可以找到 httpd.conf 文件吗?谢谢。【参考方案2】:

改变 RewriteBase / 经过 RewriteBase / Your folder /

【讨论】:

以上是关于我的 .htaccess 中的 RewriteRule 命令不起作用的主要内容,如果未能解决你的问题,请参考以下文章

.htaccess转换nginx服务器伪静态文件

我的 .htaccess 中的 RewriteRule 命令不起作用

我的 .htaccess 文件中的 $1 [QSA,L] 是啥意思?

.htaccess 500 wamp 中的内部服务器错误

htaccess 中的 RewriteRule 失败,但它可能是我的主机

为什么我的.htaccess中的重定向没有被掩盖