PHP*_*ton 5 apache url .htaccess mod-rewrite redirect
我试图通过htaccess文件重写URL,以便以下URL
www.domain.com/subfolder/index.php?key
Run Code Online (Sandbox Code Playgroud)
可通过以下方式访问:
www.domain.com/subfolder/index.php/key
Run Code Online (Sandbox Code Playgroud)
指定的"key"将确定要包含在PHP代码中的页面.我已经有了以下htaccess代码,但是在使用第二个(干净)URL时没有显示CSS,JS,图像等.关于什么可能是问题的任何想法?
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{DOCUMENT_ROOT}/$1 -f
RewriteRule ^[^/]+/([^.]+\.(?:js|css|jpe?g|png|gif))$ /$1 [L,R=301,NC]
RewriteRule ^index.php/([a-zA-Z0-9/_]+)$ index.php?key=$1
Run Code Online (Sandbox Code Playgroud)
当您使用相对网址时,浏览器将使用其加载的资源的网址动态创建完整网址.换句话说:它使用地址栏中显示的URL.在你的情况下(www.domain.com/subfolder/index.php/key
)它试图加载相对于的任何相对URL www.domain.com/subfolder/index.php/
.但是,您的资源不在那里.
您有两种方法可以解决此问题:
将您的相对网址转换为绝对网址,至少是域根目录的绝对网址.<img src="img/unicorn.png">
应该转变成类似的东西<img src="/path/to/img/unicorn.png">
.
在头元素中添加一个基础.将使用此基础而不是资源的URL来计算完整的URL.你应该添加<base href="/">
到你的<head>
元素./
然后将被用作任何相对网址的基础.