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