给定原始 URL,其中并没有使用 mod_rewrite 完全执行此操作的所有信息。
因此,您可以将所有 Web 请求发送到控制器文件,然后从那里解析请求 uri 并加载正确的页面。
所以在htaccess中,类似...
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ controller.php [L]
然后在 controller.php 中解析 url 并加载正确的页面。
您可能更喜欢的另一种选择(如果您对特定的最终 URL 很灵活)是让 URL 最终看起来像这样:
http://www.mywebsite.com/flights/10/Africa/Entebbe.htm
这可能比实现控制器更简单(尽管我更喜欢控制器来路由请求)。
所以在htaccess中...
RewriteRule
^/flights/([0-9]{1,10})/([a-zA-Z]+)/([a-zA-Z]+)\.htm$
flights-result.php?id=$1&country=$2&place=$3 [L]
然后在 flight-results.php 文件的开头附近,您应该加载 id 的数据,然后检查提供的“国家”和“地点”是否正确(以阻止人们在这里输入任何内容),如果返回 4040它不是。
请记住将您的应用程序输出的所有链接也更改为新样式。
正如您所提到的,您还可以将所有这些 URL 硬编码到 htaccess 中,但这并不理想:)