适用于.htaccess内部重定向和URL缩短的正则表达式

时间:2012-09-12 21:50:07

标签: regex .htaccess apache2

基于此主题:Proper regex for .htaccess redirect and prevention of hotlinks

我在问一个更有针对性的问题(热链接已经解决)。

我正在做一个图像主机项目并正在编码图像名称。我需要为用户提供一个简短的URL来访问他们的图像。以下内容应在内部重定向:

domain.com/hsh1h.jpg(或其他图片扩展程序)
domain.com/hsh1h

这些将在内部重定向到:
domain.com/image.php?query=hsh1h.jpg
domain.com/image.php?query=hsh1h

问题是不应重定向以下网址:

domain.com/admin
domain.com/admin/index.php

我为之前创建一个令人困惑的话题而道歉,非常感谢你的帮助!

2 个答案:

答案 0 :(得分:1)

尝试:

# these rules ensure you aren't clobbering legit requests (like to image.php)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# just in case, exclude the admin directory
RewriteCond %{REQUEST_URI} !^/admin

# rewrite
RewriteRule ^(.*)$ image.php?query=$1 [L]

答案 1 :(得分:0)

这应该做:

RewriteCond %{REQUEST_URI} !^/admin
RewriteRule (.*) image.php?query=$1

但这是黑名单 - 一般来说我建议使用白名单来代替这些东西。