我有一个删除 index.php (codeigniter) 的 htaccess 文件。我在使用 Paypal 时遇到了问题,因为返回的 URL 使用查询字符串,这在 codeigniter 中很麻烦。
这是我的 htaccess 文件:
RewriteEngine on
RewriteBase /
# Hide the application and system directories by redirecting the request to index.php
RewriteRule ^(application|system|\.svn) index.php/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [QSA,L]
我想要重写以下示例 url-s:
http://.../site/bookingconfirmed/?token=EC-56G61173NH540131H
到
http://.../site/bookingconfirmed/EC-56G61173NH540131H
和
http://.../site/bookingdeclined/?token=EC-56G61173NH540131H
到
http//.../site/bookingdeclined/EC-56G61173NH540131H
关于如何做到这一点,有什么好的想法吗?
答案1
像这样:
RewriteCond %{QUERY_STRING} token=([^&]+) [NC]
RewriteRule ^(site/booking.*)/?$ $1/%1? [L]
这也会确保尾部斜杠也到位,因此请求/site/bookingconfirmed?token=EC-56G61173NH540131H
也会正常工作。并且它会丢弃查询字符串 - 我假设其中没有其他需要保留的内容?
答案2
类似这样的情况,未经测试
RewriteEngine on
RewriteBase /
# Hide the application and system directories by redirecting the request to index.php
RewriteRule ^(application|system|\.svn) index.php/$1 [L]
RewriteRule ^site/(bookingconfirmed|bookingdeclined)/\?token\=(.*)$ /site/$1/$2 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [QSA,L]