Pretty URLs with htaccess


Pretty URLs with htaccess

可能重复:
htaccess重写中断相对路径

我希望有人能帮助我。我正在尝试设置我的网站使用漂亮的URL。

我目前有几个htaccess命令,它们隐藏了我的子域文件夹,其中包含我所有的php文件,还有一个将我的协议从http更改为https的命令,反之亦然。事实证明,这个漂亮的网址很难。我想只通过htaccess而不是php来完成它。我设法编写了一个有效的命令,但在那之后,我的css或javascript都不起作用。

# Redirect from website.com to www.website.com
RewriteCond %{HTTP_HOST} ^website.com [NC]
RewriteCond %{HTTP_HOST} !^www [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
# redirect url to www
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}' /defaultfolder/([^' ]+)' HTTP/
RewriteRule ^(.*)$ defaultfolder/error.php [L]
#this section hides the defaultfolder, tried to modify this code here to make friendly urls.
RewriteCond %{HTTP_HOST} www.website.com
RewriteCond %{REQUEST_URI} !defaultfolder/
RewriteCond %{REQUEST_URI} !images/
RewriteRule ^(.*)'/$ defaultfolder/$1'.php [L]
#https redirect
RewriteCond %{SERVER_PORT} 80
RewriteCond %{REQUEST_URI} (/defaultfolder/)(login|securepages|pages)'.php
RewriteRule ^defaultfolder/(.*)$ https://www.website.com/$1 [R,L]
#http redirect
RewriteCond %{SERVER_PORT} 443
RewriteCond %{REQUEST_URI} (/defaultfolder/)(index|nonsecure pages)'.php
RewriteRule  ^defaultfolder/(.*)$ http://www.website.com/$1 [R,L]

在那之后,我的css或javascript都不起作用。

这可能是一个相对/绝对路径问题。当您更改URL的路径时,相对链接将断开,因为基础已更改。您可以添加一些规则来将css/js的请求指向正确的位置,也可以尝试使用页面标题中的<base>标记添加正确的基。类似于:

<base href="/">

否则,您可能需要重写css和js的解析方式。比如说,你的所有风格都在/css/中,所有脚本都在/js/:中

RewriteCond %{REQUEST_URI} !^/css/
RewriteRule ^(.*'.css)$ /css/$1 [L]
RewriteCond %{REQUEST_URI} !^/js/
RewriteRule ^(.*'.js)$ /js/$1 [L]

<head><link rel="stylesheet" type="text/css" href="css/main.css" media="all"/>

这在主子文件夹中

这意味着你需要一个这样的规则:

RewriteCond %{REQUEST_URI} !/defaultfolder/
RewriteRule ^(css|js)/(.*)'.(css|js)$ defaultfolder/%1/%2.%3 [L]