合并.htaccess规则?

时间:2013-09-18 19:18:23

标签: .htaccess redirect

我有两个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

1 个答案:

答案 0 :(得分:0)

  

实际上存在一个区别 - 新网址将是一定数量的字符(6)旧网址全部是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]