2

目前我有一个漂亮的 url 的重写规则,它工作正常。我试着在一秒钟内添加,这给我带来了问题:

# redirect /?p=xyz to /xyz
RewriteCond     %{QUERY_STRING}         ^p=(.*)$
RewriteRule    ^(.*)$                   /index.php/%1 [L]

# Removes index.php from ExpressionEngine URLs
RewriteCond                     $1 !\.(gif|jpe?g|png)$  [NC]
RewriteCond                     %{REQUEST_FILENAME} !-f
RewriteCond                     %{REQUEST_FILENAME} !-d
RewriteRule                     ^(.*)$ /index.php/$1 [L]

第二个工作正常,但第一个给我内部服务器错误。基本上我想要 ?p=* 中的任何东西去 /index.php/*

[编辑] 澄清一下,我需要http://domain.com/?p=test等同于http://domain.com/test/

4

1 回答 1

2

domain.com/testdomain.com/?p=test

试试这个:

Options +FollowSymlinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} !p=   [NC]
RewriteRule  ^([^/]+)/?   /?p=$1 [L,NC]

选项:

如果情况相反:
domain.com/?p=testdomain.com/test/index.php

试试这个:

Options +FollowSymlinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} p=([^/]+)  [NC]
RewriteRule  .*   /%1/index.php?   [L,NC]

index.php如果不需要,请删除,如下所示:

RewriteRule  .*   /%1/?    [L,NC]
于 2013-04-03T22:20:15.740 回答