0

我在使用 mod-rewrite 重写这些 url 时遇到问题:

mywebsite.com/index.php?page=folder/file
mywebsite.com/index.php?page=folder/file&id=10

进入这些

mywebsite.com/file
mywebsite.com/file/10

我怎样才能做到这一点?

4

3 回答 3

2

你想要类似的东西

#With mod_rewrite
RewriteEngine on
RewriteRule   ^/file/(.+)  /index.php?page=folder/file&id=$1 [R,L]
RewriteRule   ^/file       /index.php?page=folder/file [R,L]
于 2013-04-03T01:31:35.560 回答
2

mywebsite.com/index.php?page=folder/file
mywebsite.com/index.php?page=folder/file&id=10
进入这些
mywebsite.com/file
mywebsite.com/file/10

目前尚不清楚文件夹是固定字符串还是文件所在的目录,因此在此答案中假定为固定字符串,因为两种情况下的目录都是根目录。

您可以在根目录的一个 .htaccess 文件中尝试此操作:

Options +FollowSymlinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI}  !index\.php  [NC]
RewriteRule  ^([^/]+)/?$  /index.php?page=folder/$1 [L,NC]

RewriteCond %{REQUEST_URI}  !index\.php  [NC]
RewriteRule  ^([^/]+)/([^/]+)/? /index.php?page=folder/$1&id=$2  [L,NC]

静默地图:

http://mywebsite.com/file
http://mywebsite.com/index.php?page=folder/file

http://mywebsite.com/file/10
http://mywebsite.com/index.php?page=folder/file&id=10

其中字符串文件10被假定为动态的。

对于永久重定向,将 [L,NC] 替换为 [R=301,L,NC]

于 2013-04-03T06:40:09.283 回答
0

你的意思是你想重写而不是重定向mywebsite.com/$varmywebsite.com/index.php?page=folder/$varmywebsite.com/$var1/$var2mywebsite.com/index.php?page=folder/$var1&id=$var2?你可以检查这个:

Options +FollowSymlinks
RewriteEngine on

RewriteRule ^([a-z0-9-_]+)$ /index.php?page=folder/$1

RewriteRule ^([a-z0-9-_]+)/([a-z0-9-_]+)$ /index.php?page=folder/$1&id=$2
于 2013-04-03T07:38:38.437 回答