.htaccess为2个不同的php重写网址

时间:2013-12-17 04:20:18

标签: regex apache .htaccess mod-rewrite url-rewriting

我主要有两个php - share.php和gen.php

SHARE.PHP http://example.com/share.php?name=52afcb2793007

GEN.PHP http://example.com/gen.php?name=images/This%20is%20%20%20example.jpg

我是编写.htaccess的新手,他一直在阅读stackoverflow并找到.htaccess的漂亮网址制作者。 到目前为止,我可以运行share.php或gen.php 我目前的.htaccess看起来像这样

ErrorDocument 404 /404.html
RewriteEngine on
RewriteRule ^new/?$ new.php  [NC]
RewriteRule ^webcam/?$ webcam.php  [NC]
RewriteRule ^([a-zA-Z0-9]+)$ share.php?name=$1
RewriteRule ^([a-zA-Z0-9]+)/$ share.php?name=$1
RewriteRule ^([a-zA-Z0-9]+)$ gen.php?name=images/$1
RewriteRule ^([a-zA-Z0-9]+)/$ gen.php?name=images/$1

当我提供类似http://example.com/someimage.jpg的网址时,它会出现500服务器错误,我猜这是因为它试图访问share.php并收到错误。

我希望获得的输出是这样的 http://example.com/gen/Image.jpg(图片将被取消而不是%20 - 也在阅读中) http://example.com/some_id(转到share.php) - 我猜这是有效的.htaccess首先看到匹配的规则,并且id存在所以给出结果。

1 个答案:

答案 0 :(得分:1)

保持你的.htaccess像这样:

ErrorDocument 404 /404.html
RewriteEngine on

RewriteRule ^new/?$ new.php [L,NC]

RewriteRule ^webcam/?$ webcam.php [L,NC]

## If the request is for a valid directory
RewriteCond %{REQUEST_FILENAME} -d [OR]
## If the request is for a valid file
RewriteCond %{REQUEST_FILENAME} -f
## don't do anything
RewriteRule ^ - [L]

RewriteRule ^(.+?\.jpe?g)/?$ gen.php?name=images/$1 [L,QSA]

RewriteRule ^([a-zA-Z0-9]+)/?$ share.php?name=$1 [L,QSA]