.htaccess redirect&隐藏url中的目录路径

时间:2013-11-07 05:06:39

标签: .htaccess mod-rewrite

我在根目录中安装了wordpress。我想在我的域上使用一些单独的php文件作为页面,为此我创建了一个单独的目录,其中包含用于提供php文件的所有文件,其目录结构如下:

根文件夹包含所有wordpress文件

我想用作页面的目录

/inc/css/    
/inc/php/    
/inc/img/

PHP文件中的CSS样式表文件目录位置是../inc/css后退一步&amp;然后是css文件夹。 我想隐藏URL中的文件夹,例如从根提供文件(从URL隐藏/ inc / php /,/ inc / css /&amp; / inc / img /文件夹)。< / p>

例如:www.domain.com/inc/php/about.php 重定向&amp;将此网址重写为至www.domain.com/about

我的根目录中的.htaccess

RewriteEngine On
RewriteBase /

# disable directory browsing
Options -Indexes

# Prevent hotlinking of images htaccesstools.com/hotlink-protection
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?domain.com [NC]
RewriteRule \.(jpg|jpeg|png|gif|ico|pdf|flv|jpg|jpeg|mp3|mpg|mp4|mov|wav|wmv|png|gif|swf|css|js)$ - [NC,F,L]

RewriteRule ^login$ http://domain.com/wp-login.php [NC,L]
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

<files wp-config.php>
order allow,deny
deny from all
</files>

<files ~ "^.*\.([Hh][Tt][Aa])">
order allow,deny
deny from all
satisfy all
</files>

我尝试过简单的重定向规则,但文件夹在网址中公开。

Redirect 301 /about.php /inc/php/about.php

我还在PHP文件夹中有更多文件,我想在其中应用 redirect&amp;的相同规则。重写网址&amp; 隐藏网址中的文件夹&amp;删除PHP扩展。

1 个答案:

答案 0 :(得分:1)

  

www.domain.com/inc/php/about.php redirect&amp;将此网址重写为www.domain.com/about

这当然意味着您不能拥有与php文件相同的基本文件名,例如css文件。如果请求是 www.domain.com/about ,那应该映射到/inc/php/about.php还是/inc/css/about.css?或者是图像?如果您同时拥有这两个文件,则只有一个文件将映射到。

但如果这真的是你想要的,请尝试在您拥有的热链接规则之后立即添加这些规则:

# Externally redirect requests for /inc/
RewriteCond %{THE_REQUEST} \ /inc/(php|img|css)/([^\?\ ]+)\.(php|css|jpe?g|png|gif) [NC]
RewriteRule ^ /%2 [L,R=301]

# Check if the request is a php file:
RewriteCond %{DOCUMENT_ROOT}/inc/php%{REQUEST_URI}.php -f
RewriteRule ^(.*)$ /inc/php/$1.php [L]

# Check if the request is a css file:
RewriteCond %{DOCUMENT_ROOT}/inc/css%{REQUEST_URI}.css -f
RewriteRule ^(.*)$ /inc/css/$1.css [L]

# Check if the request is a jpeg file:
RewriteCond %{DOCUMENT_ROOT}/inc/img%{REQUEST_URI}.jpg -f
RewriteRule ^(.*)$ /inc/img/$1.jpg [L]

# Check if the request is a gif file:
RewriteCond %{DOCUMENT_ROOT}/inc/img%{REQUEST_URI}.gif -f
RewriteRule ^(.*)$ /inc/img/$1.gif [L]

# Check if the request is a png file:
RewriteCond %{DOCUMENT_ROOT}/inc/img%{REQUEST_URI}.png -f
RewriteRule ^(.*)$ /inc/img/$1.png [L]