通过.htaccess隐藏URL中的目录名称

时间:2014-05-20 11:32:05

标签: php regex apache .htaccess mod-rewrite

用户输入时:

www.domain.com/standard/Public/Modules/home.php or 
www.domain.com/standard/Public/Modules/contacts.php

(或任何遵循相同模式的东西)

我希望网址显示如下:

www.domain.com/home
www.domain.com/contacts
...

我现在的.htaccess:

RewriteEngine on 
RewriteRule    ^home.php/?$   standard/Public/Modules/home.php  [NC,L] 
RewriteRule    ^contacts.php/?$   standard/Public/Modules/contacts.php  [NC,L] 

3 个答案:

答案 0 :(得分:1)

你需要在根目录中拥有它.htaccess:

RewriteEngine on

RewriteCond %{THE_REQUEST} /standard/Public/Modules/login\.php [NC]
RewriteRule ^standard/Public/Modules/login\.php$ /home [L,NC,R=301]

RewriteCond %{THE_REQUEST} /standard/Public/Modules/logout\.php [NC]
RewriteRule ^standard/Public/Modules/logout\.php$ /contacts [L,NC,R=301]

RewriteRule ^home/?$ /standard/Public/Modules/login.php  [NC,L] 
RewriteRule ^contacts/?$ /standard/Public/Modules/logout.php  [NC,L] 

答案 1 :(得分:1)

我使用它,不需要单独设置页面的重写

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.html -f 
RewriteRule ^(.*)$ $1.html

答案 2 :(得分:0)

例如

<IfModule mod_rewrite.c>
    RewriteEngine On                         

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)-product(.*).html$ /products/view/$2 [L]
    RewriteRule ^(.*)-cat(.*).html$ /products/listing/$2 [L]
    RewriteRule ^products.html$ /products/listing/ [L]
    RewriteRule ^bioproducts.html$ /products/bio_listing/ [L]
    RewriteRule ^aboutus.html$ /static/index/15 [L]
    RewriteRule ^contacts.html$ /static/contacts [L]
    RewriteRule ^(.*)-partners(.*).html /partners/index/$2 [L]



</IfModule>