我在使用htaccess重写平面链接时遇到了一些问题,我有两套独立完美运行的规则,但是如果放在一起会产生不良影响。.HTACCESS MOD_REWRITE FLAT链接问题
第一部分增加了一个尾随的正斜杠(如果缺失的话),并用301 divert重写URL。
第二个将所有'文件夹'转换为参数,然后以特定格式传递给php。
根据页面我们有一个未知数量的文件夹,所以希望保持代码的通用性。
问题是,尽管代码功能正常(即php提供了正确的参数),但url被重写为错误的格式。
PHP代码:
<?php echo ‘<pre>’;print_r($_GET); echo ‘</pre>’;?>
示例网址:(除去HTTP://作为限制为每个问题两个连杆)
localhost/foo/bar
重新写入
test.localhost/foo&other[]=bar/
带输出:
Array
(
[p] => foo
[other] => Array
(
[0] => bar
)
)
如果除去第一部分为htaccess的那么输出是相同的网址仍然是:
localhost/foo/bar
的.htaccess:
Options +FollowSymlinks
RewriteEngine on
第1部分:
RewriteCond %{REQUEST_URI} !.*/$
RewriteRule (.*)$ /$1/ [L,R=301]
SECTION 2:
RewriteRule ^(.*)/([^/]+)/?$ $1&other[]=$2 [L]
RewriteRule ^(?!index\.php)([^/]+)/?$ /index.php?p=$1 [L,QSA]
我很困惑你想要做什么和问题是什么。请您澄清一下 - 请提供1或2个这样的URL示例:它们在浏览器中的外观以及如何将它们发送到PHP脚本(重写)。据我了解,你想'http:// example.com/foo/bar' =>'http:// example.com/foo/bar /'=> ???(将被发送到PHP的最终URL) – LazyOne
我试图改变http:// localhost/foo/bar,所以如果需要的话附加一个正斜杠,当我print_r $ _GET时,我有一个数组Like( [p] => foo [other] => Array([0] => bar))。 localhost之后的第一部分成为p的值,其余部分放入另一个数组中。另外,原始文章中的条件/规则可以起作用,但是当它们一起使用时会出现问题。希望澄清 – 64k