如何在PHP中重写URL?

Pra*_*ant 13 php apache mod-rewrite seo url-rewriting

我正在尝试在我的PHP应用程序中实现URL重写.有人可以分享在PHP和MySQL中实现URL重写的一步一步程序吗?

在我的应用程序中,我想实现以下URL重写,我想重定向

1. http://example.com/videos/play/google-io-2009-wave-intro
2. http://example.com/videos/play/203/google-io-2009-wave-intro
Run Code Online (Sandbox Code Playgroud)

1. http://example.com/videos/play.php?title=google-io-2009-wave-intro
2. http://example.com/videos/play.php?id=203
Run Code Online (Sandbox Code Playgroud)

请告诉我如何以上述任何方式实现URL重写.

根据搜索引擎优化,管理,应用程序观点,以下两种类型的URL将是最好的.

1. http://example.com/videos/play/google-io-2009-wave-intro
2. http://example.com/videos/play/203/google-io-2009-wave-intro
Run Code Online (Sandbox Code Playgroud)

Sam*_*son 23

mod_rewrite初学者指南.

通常,这只不过是启用mod_rewrite模块(您可能已经在主机上启用了它),然后将.htaccess文件添加到您的web目录中.一旦你做完了,你距离完成只有几行.上面链接的教程将照顾您.

只是为了好玩,这里有一个Kohana .htaccess文件用于重写:

# Turn on URL rewriting
RewriteEngine On

# Installation directory
RewriteBase /rootDir/

# Protect application and system files from being viewed
RewriteRule ^(application|modules|system) - [F,L]

# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# Rewrite all other URLs to index.php/
RewriteRule .* index.php/$0 [PT,L]
Run Code Online (Sandbox Code Playgroud)

这将做的是获取所有请求并通过index.php文件引导它们.因此,如果您访问过www.examplesite.com/subjects/php,您实际上可能正在访问www.examplesite.com/index.php?a=subjects&b=php.

如果您发现这些URL很有吸引力,我建议您更进一步,查看MVC框架(模型,视图,控制器).它基本上允许您将您的网站视为一组功能:

www.mysite.com/jokes

public function jokes ($page = 1) {
  # Show Joke Page (Defaults to page 1)
}
Run Code Online (Sandbox Code Playgroud)

或者,www.mysite.com/jokes/2

public function jokes ($page = 1) {
  # Show Page 2 of Jokes (Page 2 because of our different URL)
}
Run Code Online (Sandbox Code Playgroud)

注意第一个正斜杠如何调用一个函数,以及后面的所有函数填充该函数的参数.这真的非常好,让网络开发更有趣!


Eve*_*ert 7

单独使用PHP无法做到这一点.您需要查看mod_rewrite(假设您使用的是apache).


pja*_*jau 6

使用mod重写:

RewriteRule ^videos/play/([0-9]+)/([^.]+)$ play.php?id=$1&name=$2
Run Code Online (Sandbox Code Playgroud)

example.com/play.php?id=203&name=google-io-2009-wave-intro

会起作用

example.com/videos/play/203/google-io-2009-wave-intro