0

同じドメインで実行したい 2 つの URL 短縮スクリプトがあります。それらを機能させる .htacess になるまではすべて問題ありません。一度に 1 つの書き換えルールしか設定できません。より知識のある人がこれらをマージする方法を知っているので、両方が機能します。

Options +FollowSymlinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !\..+$
RewriteRule ^(.*)$ show.php?id=$1 [L]

そして2つ目…

# BEGIN YOURLS
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /yourls-loader.php [L]
</IfModule>
# END YOURLS
4

1 に答える 1

0

実際には 1 つの違いがあります。新しい URL は一定の文字数になります (6) 古い URL はすべて 2、3、または 4 文字の長さです。多かれ少なかれ -

あなたは試すことができます:

Options +FollowSymlinks
RewriteEngine on

# for IDs that are exactly 6 characters:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !\..+$
RewriteRule ^(.{6})$ show.php?id=$1 [L]

# for IDs that are 2,3 or 4
# BEGIN YOURLS
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.{2,4})$ /yourls-loader.php [L]
</IfModule>
# END YOURLS

ここで重要なのは、 の{#}代わりに を使用すること*です。{6}は正確に 6 を{2,4}意味し、2 ~ 4 (両端を含む) を意味します。


ある種の一意のプレフィックスを保証できる場合、ルールは次のようになります。

RewriteRule ^ABC(.{6})$ show.php?id=$1 [L]

RewriteRule ^(?!ABC)(.*)$ /yourls-loader.php [L]
于 2013-09-18T19:38:46.337 に答える