3

私はこのサイトを持っています。以前のページの URL は次のようなものでした:

.php ファイルであっても、これらの URL には拡張子がないことに注意してください。ドメインのルートにあるのは、Wordpress サイトでした。wordpress-site はフォルダーに移動されましたが、以前のすべての URL から新しい URL へのリダイレクトを設定したいと思います (SEO の理由から)。

これまでのところ、完全にはほど遠い一時的な解決策を見つけました。私がしたことは、これを.htaccess-fileに入れたことです(PHP拡張機能を削除するため):

  # Turn on the rewrite engine
  RewriteEngine  on
  # If the request doesn't end in .php (Case insensitive) continue processing rules
  RewriteCond %{REQUEST_URI} !\.php$ [NC]
  # If the request doesn't end in a slash continue processing the rules
  RewriteCond %{REQUEST_URI} [^/]$
  # Rewrite the request with a .php extension. L means this is the 'Last' rule
  RewriteRule ^(.*)$ $1.php [L]

そして、以前の URL と同じ名前の別のファイルを作成しました (拡張子は .php で、.htaccess ファイルのために削除されます)。各ファイルの先頭に、

  <?php header('Location: THE_NEW_URL'); ?>

動作しますが、ベティのように醜いです! 最近、私の問題に対するこの一時的でばかげた修正が原因で、エラーが発生しました。フォルダーのルート (test.php と呼ばれる) に新しいページをセットアップしようとしました。このtest.phpファイルにはスタイルシートがあり、次の方法にリンクしています(かなり標準的だと思います):

     <link href="css/style.css" rel="stylesheet" type="text/css" />

しかし、test.php ファイルはこのスタイルシートを見つけることができません (もちろん、正しくアップロードしたはずです)。ソースファイルに移動してクリックすると、アクセスしようとしていることがわかります

     css/style.css.php

オオカミの間で育てられたのは私の .htaccess ファイルであることを知っているのは、アインシュタインである必要はありません。しかし、私は何をすべきですか?私の .htaccess-file を作成する方法はありますか?

     Redirect from SPECIFIC_URL to A_NEW_SPECIFIC_URL

ドメインのすべての URL が台無しにならない場所。ファイルに拡張子を付けるのが好きです。これらの 15 個の古い URL が現在移動されている (拡張子がない) ための修正が必要なだけです。

.htaccess-files が苦手で、どこにもチュートリアルが見つかりません。最悪だ!上手になる方法がわかりません。わからない解決策を実行し続ける!?!

4

2 に答える 2

2

これはあなたのニーズに合うと思います:

   <IfModule mod_rewrite.c>
      # enable URI rewrite 
      RewriteEngine on
      # set virtual root
      RewriteBase /
      # if request is for an actual file or directory on disk,
      # then do not continue with rewrite engine
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteCond %{REQUEST_FILENAME} !-f
      # setup rewrite table
      RewriteRule ^page1$ page1.php [R=302,L]
      RewriteRule ^page2$ page2.php [R=302,L]
      RewriteRule ^page3$ page3.php [R=302,L]
    </IfModule>

既存の条件のすぐ上に次の 2 つの RewriteCond 行を追加するだけで成功する場合があります。

  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
于 2013-02-15T23:44:39.673 に答える
1

古いファイルが 15 個しかない場合、簡単な解決策はこれらの 15 個のファイルをハードコードすることです。

RewriteEngine on
RewriteRule ^/?oldfile1$ /new1/path1/file1.php [R,L]
RewriteRule ^/?oldfile2$ /new2/path2/file2.php [R,L]
RewriteRule ^/?oldfile3$ /new3/path3/file3.php [R,L]
...
于 2013-02-15T23:45:02.857 に答える