Php 在现有网站中进行简单的修改

Php 在现有网站中进行简单的修改,php,apache,.htaccess,mod-rewrite,Php,Apache,.htaccess,Mod Rewrite,我正在做一个网站(针对葡萄牙语国家),一次显示一个短语 我想有更简单的非动态地址的网站是搜索引擎优化更友好,更容易记忆的用户。所以我的问题是,提前感谢所有可能的帮助: nfrases.com/ -> completely random phrase (don't need changing this!) nfrases.com/index.php?id_frase=2222 -> phrase with ID (wanted this to be nfrases.com/2222)

我正在做一个网站(针对葡萄牙语国家),一次显示一个短语

我想有更简单的非动态地址的网站是搜索引擎优化更友好,更容易记忆的用户。所以我的问题是,提前感谢所有可能的帮助:

nfrases.com/ -> completely random phrase (don't need changing this!)
nfrases.com/index.php?id_frase=2222 -> phrase with ID (wanted this to be nfrases.com/2222)
nfrases.com/tag.php?tag_nome=amor -> random phrase with tag_nome (want: nfrases.com/amor)
nfrases.com/tag.php?tag_nome=amor&id_frase=2222 -> specific phrase with tag=amor (want: nfrases.com/amor/2222)
我认为这是一个关于mod_重写的noob问题,但这正是我的本来面目D已经用我所掌握的知识做了几次尝试,但要么我得到了404页要么参数不会被$u GET['tag\u nome']或$u GET['id\u frase']接收到

我拥有的实际htaccess是这样的,但它不起作用:

Options +FollowSymlinks -MultiViews

RewriteEngine on
RewriteCond %{HTTP_HOST} !^www.nfrases.com$
RewriteRule ^(.*)$ http://www.nfrases.com/$1 [R=301]

RewriteRule ^([0-9]+)(.*) index.php?id_frase=$1
RewriteRule ^(.*)/([0-9]+) tag.php?tag_nome=$1&id_frase=$2 [L,QSA]
你们能帮帮我吗


再次感谢你所做的一切!感谢您的帮助。

以下重写规则适用于我:


您可能需要以下内容:

<IfModule mod_rewrite.c>
RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>

重新启动发动机
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则^(.*)$index.php/$1[L]

在本例中,nfrases.com/2222将重写为index.php/2222。这很容易在index.php文件中实现基本路由。对于更高级的路由,使用好的框架可能更快更容易。看看FuelPHP(http:www.FuelPHP.com)或CodeIgniter(http://www.codeigniter.com).

人们可能因此恨我,但我不会向任何人推荐CodeIgniter。它有很多用途,但也有更好的框架。他的网站听起来很简单,反正我也不想在上面使用功能齐全的框架。当然,还有更好的框架。但是CodeIgniter是GitHub最受关注的PHP框架,原因有几个。我一直在使用FuelPHP,但我会向PHP新手推荐CodeIgniter而不是任何其他框架。当然,他可以自己写路由器,但需要多长时间?任何在数据库中已经有短语的新手都可以在几个小时内(考虑到阅读文档的时间)用CodeIgniter或FuelPHP编写该应用程序。对于代码,不超过10分钟…将查看这些。但当涉及到更复杂的系统时,我是一个noob,我试图用这个站点实现的是一个简单、小、快速加载的站点。但是谢谢你的提示,谢谢!第一条规则是完美的搭配!第二个是有问题的…-->给出404页,并且-->不传递id\u frase变量!这太令人困惑了!!还有李维。。。跟不上你后面的斜杠。你在说什么尾随斜杠?它有什么好处?@AfonsoGomes我更新了我的答案来处理
/vida
,我解释了尾随斜杠的概念。是的。。。我想要所有东西都没有尾斜杠。。。我想这比较容易。另外,我认为您的规则建议中有一个bug,因为我希望tag.php?nome_tag=vida生成地址nfrases.com/vida,但仍然。。。php不会收集$\u GET变量。。。我应该使用地址片段吗?美元不起作用使人困惑me@AfonsoGomes我注意到你接受了答案。我想问题可能是倒数第二条规则会覆盖上一条规则。试试我现在发布的内容。
<IfModule mod_rewrite.c>
RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>