我已被分配到一个新网站,我需要将页面路由和“虚荣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”
我知道要问的很多,但是如果有人能指导我朝着正确的方向前进,那将非常感激。
答案 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)
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>