2017-08-10 31 views
0

我遇到了.htaccess重写规则的问题。GET参数和.htaccess - 奇怪的URL

RewriteEngine On 

RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ([a-zA-Z0-9-]+)/(.*)$ /other-app/application/$2&THEME=$1 [L] 

我需要网址:

localhost:8443/other-app/application/nice-url-theme/index.php 
localhost:8443/other-app/application/nice-url-theme/edit.php?edit&EDIT_ID=XX 
localhost:8443/other-app/application/nice-url-theme/brow.php 
localhost:8443/other-app/application/nice-url-theme/brow.phpPARAM1=XX&PARAM2=YY 

如果我得到URL

localhost:8443/other-app/application/nice-url-theme/edit.php?edit&EDIT_ID=XX 

它显示错误404:其他-应用程序/应用/ edit.php & THEME =不错,网址未找到主题。

参数星问题在哪里?为什么它不能采用GET参数?

+0

这是'.htaccess'在other-app/application /'目录下吗? – anubhava

+0

是的,它是正确的目录。 – ondrusu

回答

1

您可以使用此规则:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ([a-z0-9-]+)/(.*)$ /other-app/application/$2?THEME=$1 [L,NC,QSA] 
  • ?,而不是为&形成正确的查询字符串
  • QSA为保留现有的查询字符串。
+0

谢谢你的回答。它正在工作,但我需要其他参数(QSA)。例如edit.php?edit&EDIT_ID = 5&THEME = .....你能帮我吗? – ondrusu

+0

是的,但现在查询字符串看起来像THEME = XX&编辑&EDIT_ID = 50,我需要将参数THEME移动到查询字符串结尾。 – ondrusu

+0

查询字符串中的参数顺序无关紧要。当它是一个内部重写。你的php文件将使用'$ _GET ['THEME']',它将可用。 – anubhava