URL 重写混乱 css/js
URL rewriting messes css/js up
我想要实现的是
domain.com/register/free
那就是
domain.com/register.php?type=free
当我去 domain.com/register
时,页面加载正常,但如果我放置下一个 /free
部分,它找不到 css 或 js 图像等。不太确定我在哪里出错了,但这是我的 .htaccess 文件:
RewriteRule ^register$ register.php
RewriteRule ^register/$ register.php
RewriteRule ^register/([a-zA-Z0-9\-\_]+)$ register.php?type=
首先,你可以改进你的规则
Options -MultiViews
RewriteEngine On
RewriteBase /
RewriteRule ^register/?$ register.php [L]
RewriteRule ^register/([a-zA-Z0-9_-]+)$ register.php?type= [L]
然后,由于您根据规则 (/register/
) 创建了一个虚拟文件夹,并且您使用的是 relative 路径(而不是 absolute 路径),你的 link 已经不行了。
两个选项(都使用绝对路径):
- 为所有 css(以及 js、img 等)link 添加前导斜线。
例如:href="/css/style.css"
而不是 href="css/style.css"
- 在您所有相关页面的
<head>
之后添加此标签:<base href="/">
(这将避免您逐一替换每个 link)
我想要实现的是
domain.com/register/free
那就是
domain.com/register.php?type=free
当我去 domain.com/register
时,页面加载正常,但如果我放置下一个 /free
部分,它找不到 css 或 js 图像等。不太确定我在哪里出错了,但这是我的 .htaccess 文件:
RewriteRule ^register$ register.php
RewriteRule ^register/$ register.php
RewriteRule ^register/([a-zA-Z0-9\-\_]+)$ register.php?type=
首先,你可以改进你的规则
Options -MultiViews
RewriteEngine On
RewriteBase /
RewriteRule ^register/?$ register.php [L]
RewriteRule ^register/([a-zA-Z0-9_-]+)$ register.php?type= [L]
然后,由于您根据规则 (/register/
) 创建了一个虚拟文件夹,并且您使用的是 relative 路径(而不是 absolute 路径),你的 link 已经不行了。
两个选项(都使用绝对路径):
- 为所有 css(以及 js、img 等)link 添加前导斜线。
例如:href="/css/style.css"
而不是href="css/style.css"
- 在您所有相关页面的
<head>
之后添加此标签:<base href="/">
(这将避免您逐一替换每个 link)