基于动态url htaccess重写

时间:2015-05-25 06:18:47

标签: php regex apache .htaccess mod-rewrite

我将网站设置为生产或开发。在生产模式下,访问example.com将允许所有动态页面重写工作,在开发中,访问ip xxx.xxx.xxx.xx / ~sitename也将允许使用下面的htaccess代码重写动态页面:

# RewriteBase equivalent - Production
RewriteCond %{HTTP_HOST} !^localhost$
RewriteRule . - [E=REWRITEBASE:/]

# RewriteBase equivalent - Development
RewriteCond %{HTTP_HOST} ^xx\.xx\.xx\.xx$
RewriteRule . - [E=REWRITEBASE:/~countryr/]


RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/-]+)/?$ %{ENV:REWRITEBASE}page.php?pid=$1 [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/?$ %{ENV:REWRITEBASE}blog-detail.php?url=$1 [QSA,L]

但是我不知道在用户名之后会出现什么,在这个代码示例中,用户名是countryr,所以我可以告诉htaccess重写为/ ~countryr它可以工作,但有没有办法通过这动态吗?所以,如果它的/ ~mysite或/ ~site2它仍然可以工作?我不想在所有网站htaccess文件中写入用户名..很多网站。

1 个答案:

答案 0 :(得分:0)

您可以使用以下方式动态捕获用户名:

RewriteCond %{HTTP_HOST} ^64\.6\.104\.14$
RewriteCond %{REQUEST_URI} ^(/~[^/]+)
RewriteRule . - [E=REWRITEBASE:%1/]