2015-09-16 43 views
0

我的请求非常简单。使用我目前的.htaccess的条件和规则在这里给出:.htaccess删除* .php丢弃作为GET参数传递的URL的参数

# Remove .php extension from URLS 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^\.]+)$ $1.php [NC,L] 

# Redirect from *.php to URL without *.php 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC] 
RewriteRule^%1 [R,L] 

问题是,当我通过包含* .PHP参数1 = A &参数2 = B作为一个参数,它扔掉“参数1网址? = A & param2的= B “

例如:我想重定向到 : ”/views/users/login.php?redirect=/views/home.php?id=1“ 在所得:”/ views/users/login?redirect =/views/home“,它抛出”?id = 1“,所以现在我无法访问该参数。

如何重写我的规则以保持这些参数?

任何建议,欢迎和非常感谢。

更新(2015年9月16日):

卸下

RewriteRule ^(.*)\/index\.php$ $1 [R=301,L,NC] 

由于它是不相关的。

回答

0

你好,你只需要添加查询追加标记,像这样:

RewriteRule ^(.*)\/index\.php$ $1 [QSA,R=301,L,NC] 

那就是“QSA”

+0

对不起,这并没有解决问题。无论如何,我删除了该行,因为它是无关紧要的。我试过RewriteRule ^([^ \。] +)$ $ 1.php [R = 301,NC,L,QSA],但也不起作用。 –

+0

我的不好,那就是: ^([^ \。] +)$ $ 1.php [QSA,R = 301,NC,L] –

+0

实际上这个顺序并不合适我认为这是额外的空间破坏它 –

1

你将不得不使用urlencode到URL编码成一个参数。

所以建立时的链接或重定向,用途:

redirect('views/user/login.php?redirect=' . urlencode('/views/home.php?id=1')) 

BTW:重定向到一个文件夹中的“控制器”被称为“意见”可能在几个月:)

0
有点混乱

我已经使用下面的代码解决了这个问题(有些同意):

# Enable rewrite mod. 
RewriteEngine On 
RewriteBase/
Options +FollowSymLinks -MultiViews 

# Redirect URLs that contain *.php to extensionless php URLs. 
RewriteCond %{THE_REQUEST} ^(.*)\.php 
RewriteRule ^(.+)\.php$ $1 [R,L] 

# Resolve *.php file for extensionless php URLs. 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteCond %{QUERY_STRING} ^(.*)$ 
RewriteRule ^(.*)$ $1.php [NC,L,QSA] 

# Resolve /views/* for URLs that do not contain views and needs it. 
RewriteCond %{REQUEST_URI} ^/applications/(.*)$ [OR] 
... 
RewriteCond %{REQUEST_URI} ^/home [OR] 
... 
RewriteRule ^(.*)$ /views/$1 

# Redirect URLs that contains /views/* to viewsless URLs. 
RewriteCond %{THE_REQUEST} ^(.*)/views/(.*) 
RewriteRule ^views(.*)$ $1 [R,L] 
+0

HOWEVER ,由于最后一个.php部分,我仍然遇到http://www.example.com/users/login?param=someurl.php无法解析的问题。有任何想法吗? (PS。谢谢@tripleb,mgrueter为您提供的帮助) –

+0

RewriteCond%{REQUEST_METHOD}!发送重定向,否则POST参数将丢失。 –