2014-04-03 133 views
2

我在子域domain.com/blog/landing-page/有一个页面。.htaccess子网域的url重写

我想打开它作为domain.com/因此用户不知道我的页面位于何处。

我尝试下面的代码,但它不为我工作,

RewriteEngine On 
RewriteCond %{THE_REQUEST} \s/+blog/landing-page[/\s] [NC] 
RewriteRule ^/[R=301,L] 

我写了这一点,但它开域/博客

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+blog/landing-page/([^\s]+) [NC] 
RewriteRule^%1 [R=301,L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule (?!^dirname/)^(.*)$ /blog/landing-page/$1 [L,NC] 

我怎样才能使它发挥作用?

+0

你的正则表达式可能想使自己更像'^博客/着陆页/.*$'但是这不会真正打开该博客页面,它将重定向到主页 - mod_rewrite不是修补地址栏,而是实际指挥请求。 – CD001

+0

possiple重复 - > http://stackoverflow.com/questions/18361419/hide-directory-name-from-url – davidkonrad

+0

你可以不只是设置该文件夹作为根,因为你这样做反正呢?然后它不需要显示目录。 – cclark413

回答

1

这应该在根的.htaccess工作:

RewriteEngine On 

RewriteCond %{THE_REQUEST} \s/+blog/landing-page[/\s?] [NC] 
RewriteRule^/? [R=301,L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^((?!blog/landing-page/).*)$ /blog/landing-page/$1 [L,NC] 
+1

不客气,很高兴它解决了。 – anubhava

1

这应该工作

RewriteEngine On 
RewriteBase/

RewriteCond %{REQUEST_URI} blog/landing-page/?$ [NC] 
RewriteRule .*/[R=302,L] 

有可能你是跟你正则表达式的问题,但它是很好的实践的研究,以确认您的RewriteBase为好。我离开了R=302,让你可以测试所有的东西你提交到更持久R=301

+0

它打开页面,因为它是'域/博客/着陆页/它不工作' – Arif

+0

@Shams,我修改了上面的代码(我删除了前导正斜杠来自'RewriteCond')。让我知道这是否有效。 –

+0

我测试它,但它也不起作用,我把另一个代码在我的问题,删除它着陆页,但仍我需要删除博客 – Arif