如何在Apache上的URL中执行没有文件扩展名的重定向

时间:2011-10-05 05:45:13

标签: apache .htaccess mod-rewrite

如果页面没有指定扩展名而没有将用户物理重定向到实际的URL,是否有一种GENERIC方式将页面指向另一个页面?

e.g. 
http://www.mydomain.com/  points to http://www.mydomain.com/public
http://www.mydomain.com/auth  points to http://www.mydomain.com/public/auth 
http://www.mydomain.com/auth/process points to http://www.mydomain.com/public/auth/process 
http://www.mydomain.com/auth/process/done points to http://www.mydomain.com/public/auth/process/done 

2 个答案:

答案 0 :(得分:2)

也许这就是你所需要的:

RewriteCond %{REQUEST_URI} !^/(public)(.*)$ [NC]
RewriteRule ^(.*)$ /public/$1 [L]

修改

添加此RewriteCond以检查扩展名:

RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$

答案 1 :(得分:0)

是的,您可以通过重写规则来实现,但您应该了解一些关于URL或某些条件的信息,以防止重写其他网址。

例如,您给定URL的重写规则是:

RewriteRule ^auth/(.*)$  public/auth/$1 [L]
RewriteRule  ^$   public [L]