我怎样才能在这里转换我的htaccess规则
RewriteRule ^/?([^/]+)/([^/]+)/?$ page-1.php?a=$1&b=$2 [L,QSA] RewriteRule ^/?([^/]+)/([^/]+)/([^/]+)/?$ page-2.php?a=$1&b=$2&c=$3 [L,QSA]
纳入nginx规则? 我试过使用转换器,但我得到以下
winginx location / { rewrite ^/?([^/]+)/([^/]+)/?$ /page-1.php?a=$1&b=$2 break; rewrite ^/?([^/]+)/([^/]+)/([^/]+)/?$ /page-2.php?a=$1&b=$2&c=$3 break; } anilcetin rewrite ^/?([^/]+)/([^/]+)/?$ /page-1.php?a=$1&b=$2 last; rewrite ^/?([^/]+)/([^/]+)/([^/]+)/?$ /page-2.php?a=$1&b=$2&c=$3 last;
但是他们都没有工作,这里有什么问题?
在我的代码这里是一个页面
domain.com?page-1.php?a=a&b=b会变成domain.com/a/b
domain.com?page-2.php?a=a&b=b&c=c进入domain.com/a/b/c
问题
你的意见说你对正则expression式和重写语句感到满意,只需要帮助Nginx和位置块的部分。
快速浏览一下他们并不能让我充满信心,认为你的重写是正确的。 我会期待更多的这样的事情 – 注意这肯定是不正确的,绝对不是最佳的,甚至可能不会通过“nginx -t”检查。
rewrite ^/([0-9a-zA-Z_\-\s\+]+)?a=([0-9a-zA-Z_\-\s\+]+)&b=([0-9a-zA-Z_\-\s\+]+)*c=([0-9a-zA-Z_\-\s\+]+) /$2/$3/$4;
这里的总体思路是为你关心的URL的每个部分提供一个捕获组,另外还有一个未被使用的前端。 第一个是因为我在正则expression式方面不是很好,而且从我自己的一个可能工作的configuration中复制和粘贴东西比较容易。
Nginx的位置和RegEx
Nginx重写可以在服务器或位置上下文中,并按照configuration文件中的顺序工作。 对于你我可能会把他们放在站点configuration文件的顶部,在位置块之上
server { server_name example.com; listen 80; rewrite ^/?([^/]+)/([^/]+)/?$ /page-1.php?a=$1&b=$2 break; rewrite ^/?([^/]+)/([^/]+)/([^/]+)/?$ /page-2.php?a=$1&b=$2&c=$3 break; location / { # Whatever you want in here to handle the rewritten or normally requested URLs # root /var/www/html; # proxy_pass 1.2.3.4; } location /a { # If you want to handle specific URLs you can do it in another location block } }
对你的问题的整体评论是不是很精确,并没有表明你已经努力自己解决这个问题。