1

良い一日!URL からファイル拡張子を削除することについて質問があります。

次のルールを使用して Web サイトの URL から .php 拡張子を削除した場合、Web サイトのページへの以前のリンクは壊れますか?

たとえば、www.site.com/archives.php が www.site.com/archives になった場合、www.site.com/archives.php につながるリンクはすべて www.site.com/archives につながるか、または404?

書き換えルール:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php

前もって感謝します。

4

1 に答える 1

1

より良い解決策をお勧めします。

RewriteEngine on

# dont rewrite for directories
RewriteCond %{REQUEST_FILENAME} !-d

# rewrite everything else to index.php

RewriteRule .* index.php [L]

これで、index.php で変数を使用できるようになりました。

$_SERVER['REQUEST_URI']

要求されたファイルを読み取ることができます

例:

URL: http://my-site.de/Archives

次に、リクエストvarに文字列「Archives」が含まれます。これで、strtolowerを使用して文字列を小文字に解析できます(uriがキャメルケースで呼び出された場合は、これをお勧めします)

もう一つの例:

URL: http://my-site.de/Archives/Latest/Show

リクエスト変数には文字列「Archives/Latest/Show」が含まれています

これで、ディレクトリを使用してサーバー上の同じディレクトリ内のファイルを検索したり、パスを要求のパラメーターとして使用したりできます。

PHP で終わるソリューションは、php では次のようになります。

<?php
$requestedPath = $_SERVER['REQUEST_URI'];

if (substr(strtolower($requestedPath),-4) != '.php') {
    $requestedPath .= '.php';
}

if (file_exists($requestedPath)) {
    include_once($requestedPath);
}
?>
于 2012-10-26T10:36:57.760 に答える