web-dev-qa-db-ja.com

PHP htaccessなしでのURL書き換え

ウェブサイトは、.htaccessファイルにアクセスできないウェブホストで実行されています。ただし、ユーザーフレンドリーなURLのURL書き換えを行いたい。

例えば元のURL

www.example.com/file?q=name

予想されるURL

www.example.com/file/name
21
Vivart

他の人が言ったように、_/index.php/Nice/looking/url_のようなリンクを使用してください。
URLの途中にある「index.php」は少し奇妙に見えるかもしれませんが、.htaccessなしで見栄えを良くすることはできないと思います

それ以外の場合は、URLに_/index.php_を含めずにURLの書き換えを処理できるように、任意のURLを/index.phpにリダイレクトするようにホスティング業者に依頼できます。

次に、正規表現の一致を使用して、含めるファイルを検出できます。
preg_match('@[/]{1}([a-zA-Z0-9]+)@', $_SERVER["PATH_INFO"], $matches)($ matchesには、配列内のURLのすべての「部分」が含まれます)

ファイルを含める際は注意してください。ホワイトリストを使用して、内部ファイルを誰もロードできないようにします。

16
Daan

alix Axelが提案したように、

www.example.com/index.php/file/name

次に、$_SERVER['REQUEST_URI']を使用してURLを処理します。

5
Pentium10

最善の策は、次のようなURLを使用することです。

www.example.com/index.php/file/name

ただし、PHPコードを書き直す必要があります。

4
Alix Axel

Apacheサーバーがあり、 AcceptPathInfo が有効になっている場合は、作成したURLを使用できます。 /file/nameのリクエストは、/fileが通常のファイルの場合、PATH_INFOの値が/nameで自動的に/fileに書き換えられます。

3
Gumbo