表单提交时.htaccess重写

时间:2018-04-20 12:45:42

标签: apache .htaccess url-rewriting

假设我有一个网站,其中本网站的主页(index.php)有一个简单的表格。这是一个文本框,您可以在其中输入国家/地区并提交。它通过GET提交到results.php。鉴于该国家/地区存在,此页面会输出与该国家/地区相关联的元素列表。

所以你去example.com,在表格中输入“Argentina”并提交。浏览器向example.com/result.php?country=Argentina发出请求,您会看到结果。

但我想通过路由/重写来做到这一点。因此,不是列出阿根廷位于网址example.com/result.php?country=Argentina(长而丑)的元素的页面,我希望它位于example.com/Argentina(短而甜)。

实现这一目标的一种方法是通过重写.htaccess,如下所示:

RewriteRule ^([^/]+)/?$ result.php?country=$1 [NC]

现在我可以转到SAS URL并看到相同的页面,就像我转到了LAU URL一样。非常适合链接和SEO。但是当index.php向result.php提交表单时,如果我实际从主页面搜索阿根廷,我仍然会被带到LAU URL,而不是SAS URL。

我知道解决这个问题的一种方法是改为生成重写规则,该规则采用LAU URL并重定向到相应的SAS URL,并且还有一条规则将所有SAS URL发送到result.php,并让result.php通过爆炸$_SERVER['SCRIPT_NAME']来处理参数。但不知何故,这似乎不是很干净。有没有更好的方法,确保我在提交表单时也会看到SAS URL?

0 个答案:

没有答案