如何在htaccess和mod-rewrite上重写两个GET值

时间:2018-06-19 06:06:44

标签: .htaccess mod-rewrite

我只是想发送我发送的GET信息:

http://mywebsite.com/folder/index.php?category=category-alias-here http://mywebsite.com/folder/index.php?category=category-alias-here&page=5

要在URL栏上重写为:

http://mywebsite.com/folder/category-alias-here/

http://mywebsite.com/folder/category-alias-here/5/

我不能。它非常简单,我看到了几个类似的问题。在stackoverflow上测试了几个例子,它们都给了我404类别和两个页面。

这是我测试过的代码:

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)$ index.php?category=$1 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)$ index.php?category=$1&page=$2 [L]

我明白这个代码对我的结构来说是错误的,我尝试了几个更改放置和删除([^ /] +)或将第一个[L]更改为[N]。还有其他一些事情。但是没有运气。

请注意,整个网站都在一个真实的目录(/ folder /)中.htaccess也在那里(它不在root上),一旦我启动网站,一切都将在public_html上,但我不认为这是这个问题的原因。

是的,mod_rewrite已开启。实际上我使用了一个.htaccess,它可以在我放置的任何地方工作,它可以正确地获得类别,但它有点乱。

1 个答案:

答案 0 :(得分:0)

找到了解决方案:

Options -Indexes

<IfModule mod_rewrite.c>
 RewriteEngine On
 RewriteCond %{SCRIPT_FILENAME} !-f
 RewriteCond %{SCRIPT_FILENAME} !-d

 RewriteRule ^([a-z-]+)\/([0-9-]+)\/$ index.php?category=$1&page=$2 [NC,L]

 RewriteRule ^([a-z0-9-]+)\/$ index.php?category=$1&page=$2 [NC,L]