ホームページ >バックエンド開発 >PHPチュートリアル >URLの書き換えがよくわかりません、いつも失敗します

URLの書き換えがよくわかりません、いつも失敗します

WBOY
WBOYオリジナル
2016-06-23 14:21:311049ブラウズ

url .htaccess apache

Apache を使用して新しいエイリアスを追加しました。新しく生成された URL は http://localhost/gyjw/ です。
http://localhost/gyjw/ と入力すると、自動的に http://localhost/gyjw にジャンプします。 /index.php
http://localhost/gyjw/index.php これは私のウェブサイトのログインページです。ログイン後、http://localhost/gyjw/main.php にジャンプします。ここで http を書き換えたいと思います。 :/ 2 つのアドレス /localhost/gyjw/index.php と http://localhost/gyjw/main.php
は、 http://localhost/index.php と http://localhost/main/?id= に変更されました。
当初は .htaccess ファイルを変更して URL を書き換えたかったのですが、RewriteCond と RewriteRule が常に表示され、まだ理解できませんでした。
これを達成するのを手伝ってくれる人はいますか?

ディスカッションへの返信(解決策)

php のインクルードで URL を直接使用できない場合はどうすればよいですか?

Apache リライトを使用したことはありませんが、最初に正規表現が正しいかどうかをテストすることをお勧めします

Apache リライトを使用したことはありませんが、最初に正規表現が正しいかどうかをテストすることをお勧めします

<?php	include ("index.html?fun=000");?>

include ("index. html? fun=000"); マッピングされた check.php はマッピングに問題はないはずです。他のリンクもこのように書かれていますが、include で使用できるのはファイルのみで URL は使用できないようで、URL を開くことができません。質問の 1 つは、仮想 URL を介して他の PHP ファイルの関数を呼び出して実装する方法を知りたいというものです。

<?php	include ("index.html?fun=000");?>

include ("index.html?fun=000"); マップされた check.php 、マッピングは問題ないはずです、他のリンクはこのように書かれていますが、 include で使用できるのはファイルのみのようですurls 、つまり URL を開くことができません。これは PHP の問題であるはずです。仮想 URL を介して他の PHP ファイルの関数を呼び出して実装する方法を知りたいです。

少しわかりにくいですが、URL 書き換え機能を実装するには include 関数を使用しますか?
.htaccess をまだ勉強しておくことをお勧めします。 include 関数を使用することはほとんどありません。

少しわかりにくいですが、URL 書き換え機能を実装するには include 関数を使用しますか?

.htaccess を勉強することをお勧めします。 include 関数を使用することはほとんどありません。
たぶん、htaccess を書き換えて、実際のアドレスを隠すためにファイル check.php を呼び出したいと思います。 , しかし、直接 include ("index.html?fun=000"); steamが開けないというエラーが発生してしまいますが、Googleに行っても何も見つかりませんでした。

htaccess を書き換えて、実際のアドレスを隠すために include を使用したいと思います。 =000 ですが、直接 include ("index.html?fun=000"); Google にアクセスしても何も見つかりませんでしたというエラーが発生します。


include は直接呼び出され、index.html?fun=000 は Apache 経由で check.php にリダイレクトされます
http://localhost/index.html?fun=000 などの完全な URL を含める場合、おそらく正常です前提として、include は URL を参照できるということです

htaccess を書き換えたので、include を使用して、書き換えられたアドレスを持つファイル check.php を呼び出して非表示にしたいと考えています。実際のアドレスは、index.html?fun=000 と書き直しましたが、直接 ("index.html?fun=000") とすると、Google にアクセスするとエラーが発生します。そして何も見つかりませんでした。

include は直接呼び出され、index.html?fun=000 は Apache 経由で check.php にリダイレクトされます
http://localhost/index.html?fun=000 などの完全な URL を含める場合、おそらく正常です. インクルードがURLを参照できることが前提です
試してみましたが、動作しません。

Warning: include() [function.include]: URL file-access is disabled in the server configuration in D:\wamp\web\main.php on line 2Warning: include(http://localhost/gyjw/index.html?fun=000) [function.include]: failed to open stream: no suitable wrapper could be found in D:\wamp\web\main.php on line 2Warning: include() [function.include]: Failed opening 'http://localhost/gyjw/index.html?fun=000' for inclusion (include_path='.;C:\php5\pear') in D:\wamp\web\main.php on line 2

php.ini
; Whether to allow the treatment of URLs (like http:// or ftp://) as files.allow_url_fopen = On; Whether to allow include/require to open URLs (like http:// or ftp://) as files.allow_url_include = On


おそらく私は htaccess を書き換えましたが、実際のアドレスを隠すために、書き換えられたアドレスでファイル check.php を呼び出すために include を使用したいと考えています。書き換えられたアドレスはindex.html?fun=000ですが、直接 include ("index.html?fun=000"); Googleで調べても何も見つかりませんでした。

include が直接呼び出され、index.html?fun=000 が Apache 経由で check.php にリダイレクトされます
http://localhost/index.html?fun=000 などの完全な URL を含める場合、おそらく正常ですインクルードがURLを参照できることが前提です
試してみましたが、動作しません。

Warning: include() [function.include]: URL file-access is disabled in the server configuration in D:\wamp\web\main.php on line 2Warning: include(http://localhost/gyjw/index.html?fun=000) [function.include]: failed to open stream: no suitable wrapper could be found in D:\wamp\web\main.php on line 2Warning: include() [function.include]: Failed opening 'http://localhost/gyjw/index.html?fun=000' for inclusion (include_path='.;C:\php5\pear') in D:\wamp\web\main.php on line 2

php.ini
; Whether to allow the treatment of URLs (like http:// or ftp://) as files.allow_url_fopen = On; Whether to allow include/require to open URLs (like http:// or ftp://) as files.allow_url_include = On


PHP.INI が正しく設定されていますか?ここで、allow_url_include = Off を設定すると、このプロンプトが表示されます。phpinfo() を使用して、設定が正しいかどうかを確認してください

RewriteRule の RewriteEngine ^gate-(.*)-(.*)-(.*).html$ /test/$1.php?mod=$2&act=$3
ErrorDocument 404 /404.php
これは、 Gate-index-Ok-bad.html ページは、/test ディレクトリの Index.php にリダイレクトされ、get リクエストに 2 つのパラメーター mod=Ok、act=bad を提供します
自分で調べることができます

最後の ErrorDocuemnt は、これを防ぐためのものですファイル名の悪意のある入力はファイル名漏洩につながります

これにより、404 ページが /404.php ページにリダイレクトされます。実際に確認してください

正しい PHP.INI を設定しているかどうか確認してください。このプロンプトは、allow_url_include = Off に設定した後に表示されます。 phpinfo() を使用して、設定が正しいかどうかを確認できます。

他に設定する必要があるものはありますか?サービスも再開させていただきました。

PHP.INI が正しく構成されていますか?このプロンプトは、allow_url_include = Off に設定した後に表示されます。 phpinfo() を使用して、設定が正しいかどうかを確認できます

他に設定するものはありますか?サービスも再開させていただきました。

私側には何も問題はないはずです。

私側には何も問題はないはずです。 あれ、書き直すときに使ったら解決したんですか?バンドル? & に変更するだけです。理由がわかりません。おそらくシステムは解析時にindex.htmlとindex.htmlを考慮するのでしょうか? fun=000 は重複した名前です。


PHP.INI が正しく構成されていますか?このプロンプトは、allow_url_include = Off に設定した後に表示されます。 phpinfo() を使用して、設定が正しいかどうかを確認できます

他に設定するものはありますか?サービスも再開させていただきました。

私には何も問題はないはずです。
そして、新たな問題に遭遇しました。 。 。 。 check.php を読むと、内部の $_SESSION['ss_user_id'] データが存在しません

そして、新たな問題に遭遇しました。 。 。 。 check.php を読み込むと、内部の $_SESSION['ss_user_id'] データが存在しません

乱雑な参照はさまざまな問題を引き起こします。
素早く簡単に参照できるように、php ファイルを同じフォルダーに配置することをお勧めします。

そして、新たな問題に遭遇しました。 。 。 。 check.php を読み込むと、内部の $_SESSION['ss_user_id'] データが存在しません


乱雑な参照はさまざまな問題を引き起こします。
素早く簡単に参照できるように、php ファイルを同じフォルダーに配置することをお勧めします。 ああ、それらはすべて 1 つのフォルダー内にあります。 。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。