如何从URL中删除子目录?

时间:2013-10-26 03:10:28

标签: php regex apache .htaccess mod-rewrite

所以我试图改变我的网站:

  

http://profe5.com/Profe5-Web/public_html/login.html

对此:

  

http://profe5.com/login

我一直在努力做到这一点,但每当我运行它时我都会遇到404错误!

这是我的htaccess:

    DirectoryIndex Profe5-Web
    RewriteEngine On
    RewriteBase /
    RewriteCond %{HTTP_HOST} !^profe5\.com$ [NC]
    RewriteRule ^(.*)$ http://profe5.com/$1 [R=301,L]
    RewriteCond %{SCRIPT_FILENAME} !-d
    RewriteRule ^([^\.]+)$ $1.html [R=301,L]
    RewriteRule ^Profe5-Web/public_html/(.*)$ $1 [R=301,L]

如果你们能帮助我,真是太棒了! 非常感谢!

3 个答案:

答案 0 :(得分:1)

这应该是你完整的.htaccess:

DirectoryIndex Profe5-Web
RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} !^profe5\.com$ [NC]
RewriteRule ^(.*)$ http://profe5.com/$1 [R=301,L]

# external redirect from actual URL to pretty one
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+Profe5-Web/public_html/([^.]+)\.html [NC]
RewriteRule ^ %1? [R=301,L]

# internal forward from pretty URL to actual one
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^([^/.]+)/?$ Profe5-Web/public_html/$1.html [L,QSA]

答案 1 :(得分:0)

您可以考虑通过虚拟主机执行此操作;请咨询托管公司,了解如何设置

答案 2 :(得分:0)

如果您希望/login映射到Profe5-Web/public_html/login.html - 请尝试:

RewriteRule ^([^.]+)$ Profe5-Web/public_html/$1.html [R=301,L]

您已经拥有的RewriteRule,RewriteRule ^([^\.]+)$ $1.html [R=301,L]会将/login映射到/login.html,这似乎无法满足您的需求。