web-dev-qa-db-ja.com

htaccessはindex.phpをURLから削除します

私はグーグルが間違ったURLでいくつかのページをインデックス付けしたという問題があります。

インデックスを作成するURLは次のとおりです。

http://www.example.com/index.php/section1/section2

私はそれをリダイレクトする必要があります:

http://www.example.com/section1/section2

.htaccessは私の得意ではないので、どんな助けでも大歓迎です。

前もって感謝します。

42
Nick

これは、URLからindex.phpを非表示にする基本的なルールです。これをルート.htaccessファイルに入れます。

mod_rewriteは、PHPで有効にする必要があり、これは5.2.6以降のバージョンPHPで動作します。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?/$1 [L]
60
Shakti Singh

削除する index.php URLから、訪問者を非index.phpバージョンのページにリダイレクトするには:

RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC]
RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=301,NE,L]

これにより、/index.php/myblog単純に/myblog

301リダイレクトを使用すると、Google検索エンジンのランキングが保持されます。

49
Bradley Flood
RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /(.*)index\.php($|\ |\?)
RewriteRule ^ /%1 [R=301,L]
17
Steve Bals

既存のURLが

http://example.com/index.php/foo/bar

それをに変換したい

 http://example.com/foo/bar

次のルールを使用できます。

RewriteEngine on
#1) redirect the client from "/index.php/foo/bar" to "/foo/bar"
RewriteCond %{THE_REQUEST} /index\.php/(.+)\sHTTP [NC]
RewriteRule ^ /%1 [NE,L,R]
#2)internally map "/foo/bar" to "/index.php/foo/bar"
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)$ /index.php/$1 [L]

Spep#1では、最初にリクエスト文字列と照合し、/ index.php /の後のすべてをキャプチャします。キャプチャされた値は%1 varに保存されます。次に、ブラウザを新しいURLに送信します。 #2はリクエストを内部で処理します。ブラウザが/ foo/barに到達すると、#2ruleは新しいURLを元の場所に書き換えます。

8
starkeen

次の手順を実行

1。ホスティング/ pc mod_rewriteモジュールがアクティブであることを確認してください。アクティブになっていない場合は、ある方法でアクティブにしようとして、httpd.confファイルを開きます。 phpinfo.phpでこれを確認して確認できます。

この設定を変更します。

#LoadModule rewrite_module modules/mod_rewrite.so

になり、wampを再起動します

LoadModule rewrite_module modules/mod_rewrite.so

2。次に.htaccessファイルに移動し、次のように変更を試みます。

RewriteEngine On

RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)\?*$ index.php/$1 [L,QSA]

上記でうまくいかない場合は、これで試してみてください

RewriteEngine on

# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# otherwise forward it to index.php
RewriteRule . index.php

.htaccessファイルをルートディレクトリに移動します。そこにindex.phpがあります。

www OR root folder
- index.php
- .htaccess
5
Kailas

wordpressウェブサイトのURLからindex.phpを削除する手順。

  1. サーバーでmod_rewriteが有効になっていることを確認してください。有効になっているかどうかを確認するには、以下のコマンドを使用して、ルートフォルダーに1つのファイルphpinfo.phpを作成します。
 <?php
   phpinfo?();
 ?>

ここでこのファイルを実行します-www.yoursite.com/phpinfo.php、それはモジュールのロードセクションにmod_rewriteを表示します。有効になっていない場合は、端末で以下のコマンドを実行します。

Sudo a2enmod rewrite
Sudo service Apache2 restart
  1. .htaccessがWordPressルートフォルダーに存在することを確認してください。作成しない場合は、.htaccessファイルを作成します。このコードを.htaccessファイルに貼り付けます。
<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  RewriteRule ^index\.php$ - [L]
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule . /index.php [L]
</IfModule>  
  1. さらに.htaccessの許可を666に設定すると、書き込み可能になり、wordpress=パーマリンクで変更できるようになります。

  2. 次に、設定->パーマリンク->に移動して、必要なURL形式に変更します。このコード/index.php/%year%/%monthnum%/%day%/%postname%/を削除し、このコードをカスタム構造に挿入します:/%postname%/

  3. それでも成功しない場合は、ホスティングを確認してください、私のものはデジタルオーシャンサーバーだったので、自分でクリアしました

ファイル/etc/Apache2/sites-enabled/000-default.confを編集しました

DocumentRoot/var/www/htmlの後にこの行を追加しました

<Directory /var/www/html>
   AllowOverride All
</Directory>

Apacheサーバーを再起動します

注:/ var/www/htmlがドキュメントルートになります

3
kandysingh

これは機能します。htaccessファイルで次のコードを使用しますRewriteEngine On

# Send would-be 404 requests to Craft
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/(favicon\.ico|Apple-touch-icon.*\.png)$ [NC]
RewriteRule (.+) index.php?p=$1 [QSA,L]
0
Talib Ali

Mod_rewriteを使用して上記のメソッドで403を取得する場合があります。 index.phpを書き直す別の解決策は次のとおりです。

<IfModule mod_rewrite.c> 

RewriteEngine On

# Put your installation directory here:
RewriteBase /

# Do not enable rewriting for files or directories that exist
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]

</IfModule> 
0
Kyle Coots

詳細とcodeigniterチュートリアルについて

プロジェクトのルートディレクトリに.htaccessファイルを作成し、index.phpを削除するためのコードを以下に配置します。

  RewriteEngine on
  RewriteCond $1 !^(index.php|resources|robots.txt)
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.*)$ index.php/$1 [L,QSA]
0
Developer

上記のセクションの多くのコードを使用して、ベースURLからindex.phpを削除しました。しかし、それは私の終わりから機能していませんでした。したがって、私が使用したこのコードを使用して、適切に動作することができます。

本当にベースURLからindex.phpを削除する必要がある場合は、このコードをhtaccessに追加してください。

RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC]

RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=301,NE,L]
0
Abhisek Saha