我的 .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。我是否必须激活某些功能才能使其工作?这里可能有什么问题?谢谢。
【问题讨论】:
ISLoadModule 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 中的 RewriteRule 命令不起作用
我的 .htaccess 文件中的 $1 [QSA,L] 是啥意思?