タグ付けされた質問 「mod-rewrite」

Apache Webサーバー用のURL書き換えモジュール

2
アラートを発生させずにSSLをリダイレクトする
クライアントには、www.site.comバージョンのドメイン専用のSSL証明書があり、site.comはありません。 通常のHTTPへのリダイレクトは、mod_rewriteを介した問題ではありませんでした。 ただし、HTTPSの場合、この方法は失敗するようでした。 https://site.comリクエストをhttps://www.site.comにリダイレクトします。 これは、ブラウザーで無効な証明書の警告を表示したり、ワイルドカード証明書を取得したりせずに実行できますか?

4
.htaccessリダイレクトがhttpでは機能するが、httpsでは機能しないのはなぜですか?
単純な.htaccessファイルがあり、httpバージョンのサイトでは適切に機能しますが、httpsにアクセスすると機能しません。どうして? RewriteEngine on #This is so if the file exists then use the file RewriteCond %{REQUEST_FILENAME} -f RewriteRule ^ %{REQUEST_FILENAME} [L] #These conditions check if a file or folder exists just for reference #RewriteCond %{REQUEST_FILENAME} !-f #RewriteCond %{REQUEST_FILENAME} !-d #if someone adds ".php" to the slug get rid of it …

3
Apache:リダイレクトログはどこで調べますか?
私は複雑RewriteCondでRewriteRule、1台のマシンにいます。そしてこれらのルールに従って、リクエストのいくつかは別のマシンにリダイレクトされます。 リダイレクトがどのように行われるかを明確に示すApacheログはありますか?私が予期しない方法でリダイレクトが行われているためです。


1
HSTSと二重リダイレクト
私は共有ホスティングLAMP環境で小さなWebサイトを管理しています。これは、基本的に編集できるのはhtaccessファイルだけであることを意味します。 HSTSサポートを追加したかった(そして私はそれを行いました)が、HSTSプリロードの適格性についてここで自分のWebサイトをテストすると、次のエラーが発生しました。 エラー:HTTPは最初にwwwにリダイレクトします http://example(HTTP)はhttps://example、wwwサブドメインを追加する前に、すぐに(HTTPS)にリダイレクトする必要があります。現在、最初のリダイレクトは次のhttps://www.example.とおりです。HSTSをサポートするブラウザがサブドメインだけでなく、トップレベルドメインのHSTSエントリを確実に記録するには、追加のリダイレクトが必要です。 したがって、ユーザーを次のようにリダイレクトする必要があると思います。 http://example (これは、ユーザーがブラウザのアドレスバーに入力するものです) https://example (私たちは彼をウェブサイトのHTTPSバージョンにリダイレクトします) https://www.example (私たちは再び彼をサブドメインwwwにリダイレクトします) 私の現在のリダイレクトはこのように行われます: RewriteCond %{SERVER_PORT} 80 RewriteRule ^(.*)$ https://www.example.com/$1 [R,L] 次のように、最後の行の前にリダイレクトを追加しようとしました: RewriteRule ^(.*)$ https://example.com/$1 [R,L] ブラウザから「ページが正しくリダイレ​​クトされていません」というエラーが表示されました。 では、ユーザーをウェブサイトのhttpバージョンからhttpsにリダイレクトし、最後にwwwを使用してhttpsにリダイレクトする適切な方法は何でしょうか。そして:リスクはありますか?

2
.htaccessでログの書き換えを有効にできないのはなぜですか?
書き換えログを有効にして書き換えルールをデバッグできるようにしたいのですが、RewriteLogディレクティブを追加すると500エラーが発生します。 バージョン情報: Ubuntu 14.04 Server version: Apache/2.4.12 (Ubuntu) Server built: Feb 4 2015 14:22:06 の内容 .htaccess <IfModule mod_rewrite.c> RewriteEngine On RewriteLog /var/log/apache2/rewrite.log RewriteLogLevel 5 RewriteBase / RewriteRule ^/wordpress/wp-content/(.*)$ /wp-content/$1 [L] RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> エラーログで私は見る: /var/www/path.to/wordpress/.htaccess: Invalid command 'RewriteLog', …

1
Tomcatの前のApacheでのSSLセットアップ
SSlを使用してApacheを設定し、TomcatインスタンスにSSLリクエストをプロキシしようとしています。私はSSLを機能させたと思いますが、それでも表示されるエラーがあります: Bad Gateway The proxy server received an invalid response from an upstream server. * SSL仮想ホスト* LoadModule ssl_module modules/mod_ssl.so Listen 443 <VirtualHost _default_:443> SSLEngine On SSLProxyEngine On DocumentRoot "/var/apache-tomcat-7.0.34/webapps/Learn2Gether/" SSLCertificateFile /etc/pki/tls/learn2gether/cert-6090205098829887.pem SSLCertificateKeyFile /etc/pki/tls/learn2gether/private_key_unlocked.pem SSLCertificateChainFile /etc/pki/tls/learn2gether/rubca-chain.pem BrowserMatch ".*MSIE.*" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0 SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL ServerName www.learn2gether.rubel.rub.de ServerAlias learn2gether.rubel.rub.de #RewriteRule ^\/$ /Learn2Gether/index.html …

2
プロキシされたSSLを含むmod_rewriteでHTTPSを強制する
私は、SSL終端ロードバランサーからトラフィックを取得するサーバーを持っていますhttp_x_forwarded_proto。 直接HTTPSトラフィックまたは転送されたHTTPSトラフィックのみを許可するmod_rewriteルールが必要です。 私はこれをこれまでに持っています: RewriteEngine On RewriteCond %{HTTPS} !=on RewriteCond %{HTTP:http_x_forwarded_proto} != https RewriteCond %{HTTP:http_x_forwarded_proto} != HTTPS RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] しかし、私は得ています RewriteCond:不正なフラグ区切り文字 エラー。 これを機能させるには何を修正する必要がありますか?これは最良のアプローチですか?

3
「永続的なリダイレクト」とmod_rewrite RewriteRuleの違い
これはApache httpd 2.2サーバーです。 このウェブサーバーへのアクセスはHTTPSで暗号化する必要があります。 Webクライアントがhttp://www.example.org/ $ foo(ポート80)で自分のサイトにアクセスしたときに、https ://www.example.org/ $ fooでHTTPS暗号化されたWebサイトにリクエストをリダイレクトします。 これを行う一般的な方法は2つあるようです。 最初のメソッドはmod_aliasからの' Redirect 'ディレクティブを使用します: <VirtualHost *:80> Redirect permanent / https://www.example.org/ </VirtualHost> 2番目の方法はmod_rewriteを使用します。 <VirtualHost *:80> RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} </VirtualHost> 「リダイレクト永続」とmod_rewriteスタンザの違いは何ですか。一方が他方より優れていますか?

2
Apacheは複数の条件を書き換えます
古いドメイン名(olddomain.comなど)から新しいドメイン名(newdomain.comなど)に移行したWebサイトがあります。 SEOの理由から、すべてのWebサイトトラフィックをプライマリの新しいドメイン名(www.newdomain.comなど)に書き換える必要があります。残念ながら、複数のORタイプの書き換え条件を追加する方法がわかりません。以下のサンプルコードのすべての条件を使用すると、AND条件が発生するようです。 <VirtualHost *:80> ServerAdmin webmaster@localhost ServerName newdomain.com ServerAlias www.newdomain.com ServerAlias olddomain.com ServerAlias www.olddomain.com DocumentRoot /var/www/newdomain.com/www/ <Directory /> Options FollowSymLinks AllowOverride All </Directory> ErrorLog /var/log/apache2/error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn RewriteEngine on RewriteCond %{HTTP_HOST} ^olddomain.com [NC] RewriteCond %{HTTP_HOST} ^www.olddomain.com [NC] …

11
.htaccessがwwwで始まるページに適切にリダイレクトしない
wwwなしでURLをリダイレクトしようとしています。www.version(example.comからwww.example.com)。いつも使う RewriteCond %{HTTP_HOST} ^example\.com [nc] RewriteRule (.*) http://www.example.com/$1 [R=301,L] これは他のすべてのプロジェクトで機能します。ただし、この特定のサイトでは、リダイレクトループで終わります。ここで奇妙な部分があります:私はそれを使用してどのヘッダーを送信するかを確認するために非wwwバージョンをカールしようとしました curl --get http://example.com --dump-header domain.header > domain.html。ヘッダーファイルは次のようになります。 HTTP/1.1 301 Moved Permanently Date: Mon, 06 Jun 2011 14:45:16 GMT Server: Apache/2.2.16 (Debian) Location: http://example.com/ Vary: Accept-Encoding Content-Length: 310 Content-Type: text/html; charset=iso-8859-1 ただし、結果のHTMLファイルは次のとおりです。 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>301 Moved …

1
RewriteLogが機能しないのはなぜですか?
私は次のような.htaccessを持っています: RewriteEngine on RewriteLog "/Applications/MAMP/logs/rewrite_engine_log" RewriteCond %{REQUEST_URI} !/(index.php|css|images|js)/.*$ RewriteRule (.*) /mysite/index.php/$1 そのRewriteLogディレクティブを追加すると、内部サーバーエラーが発生します。 Apacheログファイルで次の情報を取得します。 /Applications/MAMP/htdocs/mysite/.htaccess: RewriteLog not allowed here そのrewrite_engine_logファイルを手動で作成しませんでしたが、そのパス/ Applications / MAMP / logs /は私のMacに存在します。RewriteEngineログファイルを取得するために次に何を試すことができますか?

2
すべてのURLを単一のPHPファイルで実行するにはどうすればよいですか?
URLがこれらの形式であるMVCシステムは、どのようにしてすべてのリクエストを単一のindex.phpファイルに強制するのですか? http://www.example.com/foo/bar/baz http://www.example.com/goo/car/caz/SEO-friendly-name-of-the-object http://www.example.com/hey/you 編集:以下の書き換えルールを試すと、次のエラーが発生します。 [error] [client 127.0.0.1] Invalid URI in request GET / HTTP/1.1 [error] [client 127.0.0.1] Invalid URI in request GET /abc HTTP/1.1 編集:ああ、これは/index.phpの完全な内容です。書き換えルールを削除すると、「/」または「/index.php」が出力されるか、それ以外の場合は404が返されます。 <?php echo htmlspecialchars($_SERVER['REQUEST_URI']); ?> 解決しよう:rewriteルールでindex.phpの前に/を追加すると、それが機能しました: 解決済み:2.2.4を実行していたため、/が必要だったことが判明 2.2.11にアップグレードすると、/は不要になりました。

4
RewriteRuleが配置されている場所に応じて、二重のスラッシュが続くのはなぜですか?
次のコードを使用して、すべてのwwwリクエストをwww以外のURLに送信しています。 RewriteEngine On RewriteCond %{HTTP_HOST} ^www\.example\.org$ [NC] RewriteRule ^(.*)$ http://example.com/$1 [R=301,L] これは、私のWebサイトのルートにある.htaccessファイル内でうまく機能します。 たとえば、 www.example.com-> example.com/ www.example.com/-> example.com/ www.example.com/other_page-> example.com/other_page ただし、これと同じコードをVirtualHost構成に移動すると、書き換えられたURLには2つの末尾スラッシュが含まれます。 www.example.com-> example.com// www.example.com/-> example.com// www.example.com/other_page-> example.com//other_page 書き換えルールからスラッシュを削除して修正しました。 RewriteEngine On RewriteCond %{HTTP_HOST} ^www\.example\.org$ [NC] RewriteRule ^(.*)$ http://example.com$1 [R=301,L] しかし、その理由がわかりません。誰もが理由を知っていますか?

3
mod_rewriteはGETパラメータを転送しません
開発マシンでmod_rewriteを使用してApacheを設定するのに問題があります。Mod_rewriteはアクティブであり、一部のルールで適切に機能します。次のように、一部のルールは意図したとおりに機能しません。 RewriteRule ^static/([^/]+)/([^/]+) /static.php?sISOCode=$1&sPage=$2 static.phpでこれを行います(デバッグ用): <?php print_r($_GET); print_r($_POST); print_r($_SERVER); die(); 印刷($ _SERVER配列からいくつかの項目を削除): Array ( ) Array ( ) Array ( [SERVER_SIGNATURE] => <address>Apache/2.2.11 (Ubuntu) PHP/5.2.6-3ubuntu4.1 with Suhosin-Patch Server at alpha.prove.no Port 80</address> [SERVER_SOFTWARE] => Apache/2.2.11 (Ubuntu) PHP/5.2.6-3ubuntu4.1 with Suhosin-Patch [SERVER_ADDR] => 127.0.0.1 [SERVER_PORT] => 80 [REMOTE_ADDR] => 127.0.0.1 [DOCUMENT_ROOT] => …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.