0

我有两个 URL 缩短脚本我想在同一个域上运行,一切正常,直到 .htacess 使它们工作,我一次只能有一个重写规则,我相信有更多知识的人会知道如何合并这些,以便它们都可以工作。

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

而第二个...

# 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

实际上有一个区别-新的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(含)之间。


如果您可以保证某种 uniq 前缀,那么规则将如下所示:

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

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