1

默认情况下的网址

/courses/category?cat=skills

/courses/course?cat=skills&course=timekeeping

我一直在尝试将上述内容缩短到可以在

期望的

/courses/skills

/courses/skills/timekeeping

使用以下适用于何时catcourse有变量

RewriteRule ^courses/([^/]*)/([^/]*)$ /courses/course?cat=$1&course=$2 [L]

我也尝试过添加RewriteRule ^courses/([^/]*)$ /courses/category?cat=$1&course=$2 [L],但是当我尝试访问/courses/skills时,它会出现:

内部服务器错误

注意:.php已通过使用删除

    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME}\.php -f
    RewriteRule ^(.*)$ $1.php
4

2 回答 2

1

这应该是您完整的 .htaccess:

RewriteEngine on

RewriteRule ^courses/([^/.]+)/?$ /courses/category?cat=$1 [L,QSA,NC]

RewriteRule ^courses/([^/.]+)/([^/.]+)/?$ /courses/course?cat=$1&course=$2 [L,QSA,NC]

# To internally forward /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^(.+?)/?$ /$1.php [L]
于 2013-11-05T17:00:09.413 回答
0
RewriteRule ^courses/([^/]*)$ /courses/category?cat=$1&course=$2 [L]

在这里,$2没有任何意义,因为您还没有定义它。

改用这个:

RewriteRule ^courses/([^/]*)$ /courses/category?cat=$1 [L]
于 2013-11-05T17:01:54.563 回答