网址重写规则错误:在此服务器上找不到请求的网址
Posted
技术标签:
【中文标题】网址重写规则错误:在此服务器上找不到请求的网址【英文标题】:Url rewrite rules error: The requested URL was not found on this server 【发布时间】:2021-12-24 21:44:31 【问题描述】:我正在我的域文件夹中的.htaccess
文件中创建规则。
我在服务器上的网址是:
https://www.everyoneknows.com.my/customer/?loc=dashboard
我想将网址更改为:
https://www.everyoneknows.com.my/customer/dashboard/
在.htaccess文件中,我写的规则是:
RewriteEngine On
RewriteCond %HTTP_HOST ^everyoneknows\.com\.my [OR,NC]
RewriteCond %SERVER_PORT 80
RewriteRule ^(.*)$ https://www.everyoneknows.com.my/$1 [R,L]
##External redirect to /customer/dashboard url rules here.
RewriteCond %QUERY_STRING ^loc\=dashboard$
RewriteRule ^customer/$ https://www.everyoneknows.com.my/customer/dashboard/? [R=301,L]
并显示错误信息:
Not Found
The requested URL was not found on this server.
Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
希望有人可以指导我如何更正我的重写 url 规则。谢谢。
原始结果:
更新 1
【问题讨论】:
【参考方案1】:你需要一个旧 URL 到新 URL 的重定向规则和一个内部重写规则来处理漂亮的 URL:
RewriteEngine On
RewriteCond %HTTP_HOST ^everyoneknows\.com\.my [OR,NC]
RewriteCond %SERVER_PORT 80
RewriteRule ^ https://www.everyoneknows.com.my%REQUEST_URI [R=301,NE,L]
# external redirect from actual URL to pretty one
RewriteCond %THE_REQUEST \s/+(customer)/\?loc=([^\s&]+) [NC]
RewriteRule ^ /%1/%2/? [R=301,L,NE]
# internal forward from pretty URL to actual one
RewriteCond %REQUEST_FILENAME !-d
RewriteCond %REQUEST_FILENAME !-f
RewriteRule ^(customer)/([\w-]+)/?$ $1/?loc=$2 [L,QSA,NC]
这假设customer/
子目录中没有.htaccess。确保在测试此更改之前清除浏览器缓存。
【讨论】:
感谢您的回答。您的答案可以重定向页面,但为什么页面 css 和 jquery 不包括在内。您可以在我的问题上看到更新的 1。 这是由于这些资源使用了相对 URL。要解决此问题,您可以将其添加到页面 html 的<head>
标记下方:<base href="/" />
这个标签<head>
标记下方。
好的,谢谢。所以在head标签之间,我加了以上是关于网址重写规则错误:在此服务器上找不到请求的网址的主要内容,如果未能解决你的问题,请参考以下文章
Codeigniter on xampp 错误:在此服务器上找不到请求的 URL
在此服务器上找不到请求的 URL。引荐页面上的链接似乎错误或过时