2

現在、.htaccess を使用して Web サイトを書き換え、動的サブドメインを作成しています。また、すべてのページで .php 拡張子を削除するためにも使用します。ただし、サブドメイン内に入ると、再度リダイレクトを試みます。たとえば、 https://admin.example.com/testにアクセスすると、実際にはhttps://example.com/clients/admin/test.phpにアクセスします。次の .htaccess ファイルを使用すると、さまざまな 404 エラーが発生し続けます。

Options +MultiViews
Options +FollowSymLinks

RewriteEngine On
RewriteRule ^subdomains/(.*)/(.*) http://$1.example.com/$2 [r=301,nc]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]

RewriteCond %{HTTP_HOST} !^(www\.)?example\.com$ [NC]
RewriteCond %{HTTP_HOST} ^(www\.)?([^\.]+)\.example\.com$ [NC]
RewriteCond %{DOCUMENT_ROOT}/%2%{REQUEST_URI}/ -d
RewriteRule [^/]$ %{REQUEST_URI}/ [R=301,L]

RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{HTTP_HOST} !^(www\.)?example\.com$ [NC]
RewriteCond %{HTTP_HOST} ^(www\.)?([^\.]+)\.example\.com$ [NC]

RewriteRule ^(.*)$ clients/%2/$1 [QSA,L]

これがhttps://admin.example.com/clients/admin/test.phpにリダイレクトされないようにするにはどうすればよいですか?

4

1 に答える 1

2

まず、おそらくマルチビューをオフにしたいでしょう。それは、「php 拡張機能の削除」全体を混乱させることになります。

それよりも、次のルールが必要です。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]

リダイレクトの後に、実際のリダイレクトでリダイレクト ステータス チェックを行いたい場合:

Options -Multiviews + FollowSymLinks

RewriteEngine On

RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^subdomains/(.*)/(.*) http://$1.example.com/$2 [r=301,nc]

RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{HTTP_HOST} !^(www\.)?example\.com$ [NC]
RewriteCond %{HTTP_HOST} ^(www\.)?([^\.]+)\.example\.com$ [NC]
RewriteCond %{DOCUMENT_ROOT}/%2%{REQUEST_URI}/ -d
RewriteRule [^/]$ %{REQUEST_URI}/ [R=301,L]

RewriteCond %{REQUEST_URI} !^/clients/
RewriteCond %{HTTP_HOST} !^(www\.)?example\.com$ [NC]
RewriteCond %{HTTP_HOST} ^(www\.)?([^\.]+)\.example\.com$ [NC]
RewriteRule ^(.*)$ clients/%2/$1 [QSA,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
于 2013-11-08T03:48:55.590 に答える