假设我有一个网站,其中本网站的主页(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?