我在使用 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
我怎样才能做到这一点?
我在使用 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
我怎样才能做到这一点?
你想要类似的东西
#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]
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]
你的意思是你想重写而不是重定向mywebsite.com/$var
到mywebsite.com/index.php?page=folder/$var
和mywebsite.com/$var1/$var2
到mywebsite.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