网址重写规则错误:在此服务器上找不到请求的网址

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="/" /> 这个标签我需要放哪个页面?放入.htaccess文件? 正如我在评论中所写,它应该放在页面的 php/HTML 源代码中,就在 <head> 标记下方。 好的,谢谢。所以在head标签之间,我加了everyoneknows.com.my" />,对吧?

以上是关于网址重写规则错误:在此服务器上找不到请求的网址的主要内容,如果未能解决你的问题,请参考以下文章

无法加载网页并出现错误:在此服务器上找不到请求的 URL

在此服务器 django 上找不到请求的 URL

Codeigniter on xampp 错误:在此服务器上找不到请求的 URL

在此服务器上找不到请求的 URL。引荐页面上的链接似乎错误或过时

CakePHP错误:在此服务器上找不到请求的地址'/ unsigned_images / index'

在此服务器上找不到请求的 URL。