.htaccess FANCY url在文件夹内不工作



所以我有一个与生产环境相同的开发环境,我需要创建一个类似www.example.com/booking/{varible1}/{varible2}的FANCY URL。

然而,我使用的代码不工作…

RewriteEngine On
RewriteRule ^.+?/((img|css|js)/.+)$ /$1 [L,R=301,NC]
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)/([^/]*)$ ./index.php?varible=$1&ref_URI=$2 [L]

它只是将index.php页面显示为纯HTML,没有CSS,只有文本…

有人有什么想法吗?我的COVID隔离大脑不能正常工作。

仅供参考,我真的不明白重写,所以如果你能解释什么是错的,那将是惊人的!

看起来您可能使用了CSS(可能还有其他静态资源)的相对url路径。你的第一条规则看起来像是试图解决这个*1

如果您正在重写形式/foo/bar(双路径深度)的URL请求,如您的规则所示,并且您的资源相对于根中的/index.php链接,那么资源将不会被发现,因为它们是相对于客户端URL (/foo/bar)解决的(由浏览器),所以您最终会得到/foo/css/mystyles.css,而不是/css/mystyles.css,因为您可能期望。如果您查看浏览器开发工具中的网络流量,您应该可以看到发生了什么。

您需要使用绝对url或根相对url(以斜杠开始),或者,作为的解决方案,设置base元素来告诉浏览器应该如何解析相对url。但是,请注意,使用base元素还有一些额外的注意事项,特别是关于页面内锚。

请参阅我在Webmasters Stack上对以下问题的回答,该问题更详细地介绍了这一点:

  • Webmasters: .htaccess重写URL导致丢失CSS

RewriteRule ^.+?/((img|css|js)/.+)$ /$1 [L,R=301,NC]

*1 你的第一条规则是尝试删除(错误的)url路径,出现在/img,/css/js文件请求之前,这可能是由于使用相对url路径到你的静态资源。

如果您一开始就正确地链接到静态资源(使用根相对url),那么应该是不必要的。但是试图通过外部重定向来纠正这个问题对用户、服务器和潜在的SEO都是不利的。

除非这个指令有其他用途,否则这个指令应该被删除。


RewriteRule ^([^/]*)/([^/]*)$ ./index.php?varible=$1&ref_URI=$2 [L]

旁白:替换字符串上的./前缀是多余的,应该删除。

相关内容

  • 没有找到相关文章

最新更新