1

.htaccess の書き換えとリダイレクトを使用していくつかのタスクを実行しようとしていますが、すべてをうまく連携させるのに問題があります。私は3つのことを達成しようとしています -

  1. http://www.domain.com/directory/index.php?p=pageの形式の URL は、 http: //www.domain.com/directory/pageに書き換え/リダイレクトする必要があります。
  2. WWW 以外のリクエストは、www にリダイレクトする必要があります。バージョン
  3. 特定のページのみをリダイレクトして https で提供する必要があり、それ以外は (必要に応じて) リダイレクトして http で提供する必要があります。

これが私が現在持っているもので、上記の1と2を処理しています。#3は課題であることが証明されています:

RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

#Rewrite for dynamic subpages (/directory/index.php?sitepage=page)
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$ $1/index.php?sitepage=$2 [L]

#Root level pages remove php extension
RewriteRule ^([a-zA-Z0-9_-]+)$ $1.php [L]   

どんな助けでも大歓迎です!

4

1 に答える 1

1

リダイレクトがルーティング ルール (最後の 2 つ) の上にあることを確認する必要があります。

RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

# All the pages that must be HTTPS
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} ^/(directory1/page1|directory1/page2|page3)
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]

#Rewrite for dynamic subpages (/directory/index.php?sitepage=page)
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$ $1/index.php?sitepage=$2 [L]

#Root level pages remove php extension
RewriteRule ^([a-zA-Z0-9_-]+)$ $1.php [L]   
于 2013-11-14T01:04:17.313 に答える