.htaccess重写特定目录

时间:2014-01-28 22:40:25

标签: php apache .htaccess mod-rewrite

我已被分配到一个新网站,我需要将页面路由和“虚荣URL”与.htaccess相结合

我真的不熟悉htaccess,尽管我做了很多研究工作,但我还没有得到任何可靠的答案。

该网站有一个定制的PHP管理系统,位于名为“admin”的子目录中。我根本不想搞砸它,所以我对htaccess所做的任何改变都不会影响该子目录。

因此,鉴于该页面有3个主要“页面”:回家,购买和出售,我需要向“www.sitename.com”和“www.sitename.com/index.php”发出请求才能路由到主页。我需要向“www.sitename.com/sell”发出请求才能转到销售页面。

然后最难的部分,我需要向“www.sitename.com/buy”发出请求以路由到“buy.php”,但要求“www.sitename.com/buy/category-name”发出请求路线“www.sitename.com/buy.php?c=12”

我知道要问的很多,但是如果有人能指导我朝着正确的方向前进,那将非常感激。

3 个答案:

答案 0 :(得分:1)

这些规则适合您:

RewriteEngine On
RewriteBase /

# skip admin OR any valid file/dir
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_URI} /admin/ [NC]
RewriteRule ^ - [L]

RewriteRule ^(sell|buy)/?$ $1.php [NC,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(buy)/([^/]+)/?$ $1.php?c=$2 [L,NC,QSA]

答案 1 :(得分:0)

试试这个:

RewriteEngine On  

RewriteCond %{SCRIPT_FILENAME} !-d  
RewriteCond %{SCRIPT_FILENAME} !-f  

RewriteRule ^sell$ ./sell.php
RewriteRule ^buy$ ./buy.php
RewriteRule ^buy/(.*)$ ./buy.php?c=$1

如果类别始终为数字,请将(.*)替换为(\d+)

答案 2 :(得分:0)

我认为这是希望 / *复制并粘贴下面,保存名称。 htaccess * /

RewriteEngine On
RewriteBase /yousite.com/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}.php -f
#ex1:http://yousite.com/buy/3
RewriteRule ([a-zA-Z_-]+)/([0-9]?) buy.php?c=$1

/ *并在你的文件php * /

<!-- #ex1:http://yousite.com/buy/3 -->
<a href="<?php echo "buy/3" ?>">buy/3</a>