1

重複の可能性:
htaccessrewriteは相対パスを壊します

誰かが私を助けてくれることを願っています。きれいなURLを使用するようにWebサイトを設定しようとしています。

現在、すべてのphpファイルを含むサブドメインフォルダーを非表示にするhtaccessコマンドと、プロトコルをhttpからhttpsに、またはその逆に変更するコマンドがいくつかあります。きれいなURLは難しいことがわかっています。phpではなくhtaccessだけでやりたいです。私はなんとか機能するコマンドを書くことができましたが、その後、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]
4

1 に答える 1

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]
于 2012-08-31T16:19:43.273 に答える