.htaccess删除具有多个参数的漂亮网址的php扩展名

时间:2018-10-07 01:20:21

标签: php .htaccess

我现在已经修改了.htaccess文件,以将.php扩展名删除到我的网站。我也有一个规则,要有一个漂亮的网址。但是我的问题是我不确定如何添加第二个参数。另外,我想知道如果未设置这些参数,对于规则是否有问题。

例如,到目前为止,我的规则会将mywebsite.com/index.php更改为mywebsite.com,将mywebsite.com/login.php更改为mywebsite.com/login和mywebsite.com/index.php?week=1更改为mywebsite.com/1。

但是我现在添加了一个新参数,我的网址现在是mywebsite.com/index.php?page=a?week=1,我希望将其更改为mywebsite.com/a/1。总是要设置“周”或“页面”参数。因此有时可能只是index.php?week = 1或index.php?page = a,也可以同时设置它们。

这是我当前的规则:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php [NC,L]
RewriteRule ^([0-9]+)$ index.php?week=$1
RewriteRule ^([0-9]+)/$ index.php?week=$1

我所要求的甚至是可能的吗?

2 个答案:

答案 0 :(得分:2)

您也可以尝试

RewriteEngine on

一周:

RewriteRule ^index/(\d+)$ index.php?week=$1 [NC,L]

对于页面:

RewriteRule ^index/(\w+)$ index.php?page=$1 [NC,L]

对于星期和页面:

RewriteRule ^index/(\d+)/(\w+)$ index.php?week=$1&page=$2 [NC,L]

答案 1 :(得分:1)

从您对我的问题的回答(请参阅comments)来看,page仅是字母,而week仅是数字,这使它们易于区分。因此,您不必必须通过添加上层来区分这两种情况来修改URL方案。

也就是说,针对您的问题的可行解决方案是:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ /$1.php [L]

# /digit/ for "week" only
RewriteRule ^([0-9]+)/?$ /index.php?week=$1 [L]

# /alpha/ for "page" only
RewriteRule ^([a-z]+)/?$ /index.php?page=$1 [NC,L]

# mix of both, order is /page/week/
RewriteRule ^([a-z]+)/([0-9]+)/?$ /index.php?page=$1&week=$2 [NC,L]