我希望有人可以帮助我。我正在尝试将我的网站设置为使用漂亮的网址。
我目前有几个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]
答案 0 :(得分:1)
非我的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]