PHP Rewrite Rules

▼魔方 西西 提交于 2019-12-17 07:27:46

问题


The actually URL which my app uses is:

http://site.com/search.php?search=iPhone 

but I would like it to be possible to achieve the same with

http://site.com/iPhone

I have no experience of rewrite rules, how can I set this up?

The solution has worked but the new URL is displayed in the address bar. I thought it would have been possible to set this up so that it appears as though the page location is

http://site.com/iPhone

without changing to display

http://site.com/search.php?search=iPhone 

Is this possible? Thanks.


回答1:


Create a file called .htaccess in the root of your website and put this in it.

RewriteEngine on 
Options +FollowSymlinks
RewriteBase / 

RewriteRule ^(.*) search.php?search=$1 [R]

Should do the trick.

I would suggest however that you make it a bit more specific, so maybe require the user of a search directory in your url. eg instead of mysite.com/IPhone use mysite.com/search/IPhone which would work like

RewriteEngine on 
Options +FollowSymlinks
RewriteBase / 

RewriteRule ^search/(.*) search.php?search=$1 [R]

This makes it easier to have normal pages that arnt redirected, such as about us or a basic homepage.

As Chris says, this is not PHP but Apache that does this, and whether it works can depend on your hosting setup.




回答2:


You need to specify something like this in your .htaccess file:

RewriteEngine on
RewriteRule /(.*) /search.php?search=$1

Check also:

  • mod_rewrite: A Beginner's Guide to URL Rewriting
  • Module mod_rewrite, URL Rewriting Engine



回答3:


Rewrite rules aren't part of PHP as far as I'm aware, but Apache (specifically mod_rewrite) or whatever server you're using. For Apache, you need on the server to have a file called .htaccess, and in it put something like:

RewriteEngine on
RewriteRule ^(\w+)/?$ /index.php?search=$1

^(\w+)/?$ is a regular expression - it matches any word of 1 or more characters, followed by a / maybe. So it changes site.com/iPhone into site.com/index.php?search=iPhone. Sound about right?



来源:https://stackoverflow.com/questions/559186/php-rewrite-rules

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