0

組織で URL 短縮サービスを設定しています。短縮された URL を index.php ファイルに書き換えたいのですが、ルートへのリクエストをメイン Web サイトにリダイレクトします。

リクエスト: short.domain.tld/abc
ユーザーが見る: short.domain.tld/abc
表示されるページ: short.domain.tld/index.php?code=abc

リクエスト: short.domain.tld/
ユーザーが見る: website.domain.tld
表示されるページ: website.domain.tld (私の Web サイト サーバー上)

私の .htaccess ファイルは現在次のとおりです。

Options +FollowSymLinks 
RewriteEngine on

RewriteCond %{REQUEST_FILENAME}  !-s 
RewriteRule ^/(.*)$ index.php?code=$1 [L] 
RewriteRule ^.*$ http://website.domain.tld/

サブディレクトリのリクエストとドメインのルートのリクエストを区別する方法がわかりません。

4

1 に答える 1

1

ルート ディレクトリの .htaccess ファイルでこれを試すことができます。

Options +FollowSymlinks -MultiViews
RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST}  short\.domain\.tld  [NC]
RewriteCond %{REQUEST_URI}  !index\.php       [NC]
RewriteRule  ^([^/]+)/?   /index.php?code=$1  [NC,L]

RewriteCond %{HTTP_HOST}  short\.domain\.tld  [NC]
RewriteCond %{REQUEST_URI}   ^/$      
RewriteRule  .*    http://website.domain.tld  [R=301,L]

内部でマップする

http://short.domain.tld/abc末尾のスラッシュの有無にかかわらず (アドレスバーに表示)

http://short.domain.tld/index.php?code=abc

文字列abcは動的であると想定されます。


または永久にリダイレクトします

http://short.domain.tld/セグメントパスなし

に:

http://website.domain.tld/ (アドレスバーに表示)

于 2013-03-07T03:36:53.193 に答える