ウェブサイトをデザインしています。私のウェブサイトのアドレスを次の画像のようにしたい:
私のウェブサイトを http://something.com/profile.php のように見せたくないのですが、誰かが私のウェブサイトを開いたときに.php
拡張機能がアドレスバーから削除されます。言い換えれば、私は私のウェブサイトが次のようであることを望みます: http://something.com/profile
2番目の例として、StackOverflow Webサイトのアドレス自体を確認できます。
誰かがこれを行うのを手伝ってくれますか?ありがとう!
.htaccessファイルをサイトのルートフォルダー(たとえば、/ home/domains/domain.com/htdocs /)に追加して、次のコンテンツを追加します。
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
最初に、mod_rewriteモジュールがインストールされていることを確認します。次に、それがどのように機能するかを理解するように注意してください。
URLや拡張子を非表示にしないでください。あなたがすることは、古いものに向ける新しいURLを作成することです、例えば
Webサイトに配置するURLはyoursite.com/play?m=asdfになります
またはそれ以上
yoursite.com/asdf
ディレクトリasdfが存在しない場合でも。次に、mod_rewriteをインストールして、これを.htaccessに配置します。基本的に、要求されたURLがファイルではなく、ディレクトリでもない場合は、スクリプトに送信します。
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /play.php [L]
ほぼ完了-新しいURLを解析するために、PHPスクリプトに何かを書き込む必要があります。古いURLでも機能するように、これを実行する必要があります。変数が常に正確に一致するシステム[〜#〜] or [〜#〜]「SEOフレンドリーURL」と製品IDを関連付けるデータベーステーブルを作成します。
/ Some-Cool-Video(製品ID asdfと同じ)
これの利点は?検索エンジンは、「Some Cool Video」というキーワードにインデックスを付けます。 asdf?誰がそれを検索しますか?
これをプログラムする方法の詳細を説明することはできませんが、クエリ文字列を取得し、最後を取り除きます
yoursite.com/Some-Cool-Video
「asdf」に変わります
次に、m変数をこれに設定します
m = asdf
したがって、両方のURLは同じ製品に移動します
yoursite.com/play.php?m=asdf
yoursite.com/Some-Cool-Video
mod_rewriteは他にも多くの重要な機能を実行できます。Googleがそれを実行し、サーバー上でアクティブにします(おそらく既にインストールされています)。
さまざまな選択肢があります。それらの1つは、「profile」という名前のフォルダーを作成し、「profile.php」の名前を「default.php」に変更して「profile」フォルダーに入れることです。この方法でこのページに注文することができます:
古いページ: http://something.com/profile.php?id=a&abc=1
新しいページ: http://something.com/profile/?id=a&abc=1
満足できない場合は、複雑な方法についてコメントを残してください。
ディレクトリを作成してindex.phpを保持することの問題は、
ソリューションは、1。MOD REWRITE(上記で提案)2. PHPコードを使用して、インデックスファイルに他のファイルを動的にインクルードします。ここでもう少し詳しく読んでください http://inobscuro.com/tutorials/read/16/
これは、私が使用する簡単なPHP方法です。
拡張子が.phpのページがリクエストされた場合、拡張子が.phpのない新しいリクエストが作成されます。これにより、拡張子.phpはブラウザのアドレスフィールドに表示されなくなります。
.htaccessの多くの提案が役に立たず、.htaccessがサーバーで機能しなかった理由を見つけるよりもPHP 。
これを各PHPファイル(おそらく他の何かの前)の先頭に置きます:
include_once('scripts.php');
strip_php_extension();
次に、これらの関数を「scripts.php」ファイルに配置します。
//==== Strip .php extension from requested URI
function strip_php_extension()
{
$uri = $_SERVER['REQUEST_URI'];
$ext = substr(strrchr($uri, '.'), 1);
if ($ext == 'php')
{
$url = substr($uri, 0, strrpos($uri, '.'));
redirect($url);
}
}
//==== Redirect. Try PHP header redirect, then Java, then http redirect
function redirect($url)
{
if (!headers_sent())
{
/* If headers not yet sent => do php redirect */
header('Location: '.$url);
exit;
}
else
{
/* If headers already sent => do javaScript redirect */
echo '<script type="text/javascript">';
echo 'window.location.href="'.$url.'";';
echo '</script>';
/* If javaScript is disabled => do html redirect */
echo '<noscript>';
echo '<meta http-equiv="refresh" content="0; url='.$url.'" />';
echo '</noscript>';
exit;
}
}
もちろん、拡張子のないリクエストを拡張子のあるファイルにリダイレクトするには、Apacheをセットアップする必要があります。上記のソリューションは、要求されたURIに拡張子があるかどうかを確認し、拡張子がある場合はURIを要求します。次に、Apacheは拡張子を持つファイルへのリダイレクトを行いますが、要求されたURI(拡張子なし)のみがブラウザのアドレスフィールドに表示されます。利点は、コード内のすべての「href」リンクが完全なファイル名、つまり.php拡張子を保持できることです。
トニー、スクリプトは大丈夫ですが、100個のファイルがある場合は?これらすべてにこのコードを追加する必要があります:
include_once( 'scripts.php');
strip_php_extension();
各phpファイルにメニューを含める(おそらく、すべてのWebページにメニューが表示される)ので、これらの2行のコードをメニューファイルにのみ追加できると思います。私のためのこの仕事:D
.htaccessを使用してファイル拡張子を削除する
元のURL: http://ravinderrathore.herobo.com/contact.php
urlから.php、.htmlなどのファイル拡張子を削除するhtaccessルール。
RewriteRule ^(.*)$ $1.php
After Rewriting: http://ravinderrathore.herobo.com/contact
RewriteEngine on
RewriteCond %{THE_REQUEST} ^(.+)\.php([#?][^\ ]*)?\ HTTP/
RewriteRule ^index(.*)?$ index.php$1 [L,QSA]
RewriteRule ^login_success(/)?$ login_success.php [L,QSA]
RewriteRule ^contact(/)?$ contact.php [L,QSA]
igorと同じですが、2行目がなくても動作するはずです:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
実際、これを操作する最も簡単な方法は
そして、URL www.yoursite.com/dataがそのindex.phpファイルを読み取ります。さらに詳しく知りたい場合は、その中のサブフォルダー(「リスト」など)を開き、そのフォルダーに別のindex.phpを置くと、www.yoursite.com/data/listでPHPファイル。
これにより、これを完全に制御でき、SEOに非常に役立ちます。
最初の回答とほぼ同じですが、いくつかの利点があります。
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ $1.html
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
サイトに他のファイル拡張子がある場合は、合計するだけです