1

古いページ (「index.php/sdasdasd/sdasda/」など) を新しいコンテンツにリダイレクトしたい。データはMySQLに保存されているため、これを行うためにPHPを使用しています。問題は、URL が「index.php」で始まる場合、正しいページにリダイレクトされないことです。バックグラウンドでは、「index.php?url=index.php/sdasdasd/sdasda/」を呼び出す必要があります。.htaccess でこれを修正するにはどうすればよいですか?

RewriteEngine on

RewriteCond %{REQUEST_URI} !(/$|\.)
RewriteRule (.*) %{REQUEST_URI}/ [R=301,L]

RewriteRule ^(.*/)?\.svn/ - [F,L]
RewriteRule \.(gif|jpg|png|css|flv|js|swf|php)$ - [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+\.php)$ index.php?url=$1 [QSA,L]
RewriteCond %{REQUEST_URI} !(\.)
RewriteCond %{REQUEST_URI} !(\.)
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} .*

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

このコードに他に改善点がある場合は、変更を提案してください。

4

1 に答える 1

0

.htaccess でこれを修正するにはどうすればよいですか?

重複する条件が 1 つあります。

RewriteCond %{REQUEST_URI} !(\.)
RewriteCond %{REQUEST_URI} !(\.)

そのうちの 1 つを削除できます。

ただし、リクエストを にリダイレクトするに/index.php/somethingは、これを のすぐ下に追加する必要がありますRewriteEngine on

RewriteCond %{THE_REQUEST} \ /index\.php
RewriteRule ^index\.php(.*)$ /$1 [L,R=301]
于 2013-11-15T11:31:55.060 に答える