How to write .htaccess file to get everything after slash as parameter?

拥有回忆 提交于 2020-01-03 01:41:29

问题


I have a URL i.e "www.mysite.com". I want to send parameters via url in following ways:

www.mysite.com/count
www.mysite.com/search_caption?query=huha
www.mysite.com/page=1
www.mysite.com/search_caption?query=huha&page=1

In each of these cases I want to load index.php page with parameters as follows for each case:

var_dump($_REQUEST) results into [count]
var_dump($_REQUEST) results into [query="huha"]
var_dump($_REQUEST) results into [page=1]
var_dump($_REQUEST) results into [query="huha",page=1]

How do I write .htaccess file to achieve this?

I am using this code but it is capturing only params after "?" and not everything after first slash

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
#RewriteRule ^([^/]+)/?$ index.php?{REQUEST_FILENAME}=$1 [L,QSA]
RewriteRule .* /index.php [L]

回答1:


Something like that should get close, though you really should think about those strange URL patterns instead of trying to fix them afterwards with rewriting...

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L,QSA]

RewriteRule ^count index.php?count=1 [L]

RewriteRule ^page/(.*)$ index.php?page=1 [L]

RewriteRule ^ index.php [L,QSA]

Some notes:

  • the first three RewriteRules are exceptions necessary because your given requests do not follow a sane and common pattern. They appear somewhat chaotically chosen.
  • this certainly is not free of issues, I did not test it, only typed it down.
  • this assumes the "page" example to be requested like as discussed in the comments.
  • index.php actually has to exist as a file, otherwise this will result in a rewrite loop

Given all that these rewritings should happen:

www.mysite.com/count => index.php?count=1
www.mysite.com/search_caption?query=huha => index.php?query=huha
www.mysite.com/page/1 => index.php?page=1
www.mysite.com/search_caption?query=huha&page=1 => index.php?query=huha&page=1

Also note that the rules above are written for .htaccess style files. To be used as normal rules, so inside the http servers host configuration, they would have to be written slightly different. You should only use .htaccess style files if you really, really have to, so if you have no access to the configuration files. You should always try to avoid those files if somehow possible. They are notoriously error prone, hard to setup and debug and really slow the server down. So if you have access to the http server configuration, then defines such rules in there instead.



来源:https://stackoverflow.com/questions/33064833/how-to-write-htaccess-file-to-get-everything-after-slash-as-parameter

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!