0

htaccessルールを作成するのはこれが初めてです。私の目標は、すべての相対リンクを絶対にリダイレクトすることです。始めに私はテストしていました:

RewriteEngine On

RewriteRule gallery\.php$ http://www.domain.com/sample/gallery.php
RewriteRule info\.php$ http://www.domain.com/sample/gallery.php

最初のルールでは、リンクをクリックするとFirefoxが「ページが正しくリダイレ​​クトされていません」というエラーをスローしますが、2番目のルールは正常に機能します。将来のアイデアは、次のようなルールを作成することでした。

RewriteRule catchAllRelativeLinks$ http: //www.domain.com/sample/$1

しかし、最初のルールを機能させることができなければ、実際のルールを作成する方法が見つからないと思います。

編集:無限のループを回避するために、変数をキャッチすることによって、私が最初のインスタンスにいるのか、2番目のインスタンスにいるのかを理解しようとすることはできませんか?私が試した(そして失敗した)いくつかのアイデア:

RewriteCond %{IS_SUBREQ} false
RewriteRule ^gallery\.php$ http://www.domain.com/gallery.php?a [R=302,L]

RewriteCond %{THE_REQUEST} !(\?something)$
RewriteRule ^gallery\.php$ http://www.domain.com/gallery.php?something [R=302,L]

または環境変数を使用して、

再度、感謝します

4

2 に答える 2

1

最初のルールは、無限ループになります。mod_rewrite相対リンクを絶対にするのはそれほど優れているわけではありません。これはHTMLで行う必要があります。たとえば、回す

<a href="gallery.php">Gallery</a>

の中へ

<a href="/sample/gallery.php">Gallery</a>

ただし、2番目のルールは、何かmod_rewriteが非常にうまく機能し、あるページまたはURLから別のページにリダイレクトするために機能します。詳細については、Apacheのドキュメントを参照してください。

于 2012-11-09T17:49:34.513 に答える
0

詳細な説明については、このリンクをチェックアウトできます。

https://wiki.apache.org/httpd/RewriteHTTPToHTTPS

これは私のために働いた(:

    RewriteEngineをオンにします

    #POST送信を確認する|
    #POSTパラメータはリダイレクトで保持されないため。
    #すべてのPOST送信が安全であることを確認する場合は、その行を省略できます   
    #(セキュリティで保護されていないPOST送信は無視されます)
    RewriteCond%{REQUEST_METHOD}!^ POST $

    #HTTPSを強制する
    RewriteCond%{HTTPS}!= on [OR]
    RewriteCond%{SERVER_PORT} 80
    #適用するページ
    RewriteCond%{REQUEST_URI} ^something_secure[または]
    RewriteCond%{REQUEST_URI} ^ something_else_secure
    RewriteRule。*https://%{SERVER_NAME}%{REQUEST_URI} [R = 301、L]

于 2017-04-06T12:06:59.223 に答える