Php 修改帮助!

Php 修改帮助!,php,mysql,apache,.htaccess,mod-rewrite,Php,Mysql,Apache,.htaccess,Mod Rewrite,我想使用“模式重写”显示以下内容: mydomain.com/Florida/Tampa/而不是mydomain.com/place.php?state=Florida&city=Tampa 我已经这样做了:(因为我认为这可能会有所不同!) mydomain.com/[name].html而不是mydomain.com/profile?user=[name] 这是密码 Options +FollowSymLinks Options +Indexes RewriteEngine On R

我想使用“模式重写”显示以下内容: mydomain.com/Florida/Tampa/而不是mydomain.com/place.php?state=Florida&city=Tampa

我已经这样做了:(因为我认为这可能会有所不同!) mydomain.com/[name].html而不是mydomain.com/profile?user=[name]

这是密码

Options +FollowSymLinks  
Options +Indexes 
RewriteEngine On 

RewriteBase /  
RewriteCond %{SCRIPT_FILENAME}! !-f  
RewriteCond %{SCRIPT_FILENAME}! !-d  
RewriteRule (.*).html profile.php?user=$1 [QSA.L]
加:


你应该使你的模式尽可能具体。所以试试这些规则:

# stop rewriting process if request can be mapped to file or directory
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

# get user pages
RewriteRule ^([^/]+)\.html$ profile.php?user=$1 [L,QSA]

# get paces
RewriteRule ^([^/]+)/([^/]+)/$ place.php?state=$1&city=$2 [L,QSA]
这里我使用
[^/]+
(除了
/
之外的一个或多个任意字符)。但是,如果您只想允许特定字符,那么应该在模式中反映这一点(例如,请参见webdestroya的建议)


您还应该确保使用明确的URI。在考虑规则之前,您应该开发一个完善的URI结构。你知道,.

只要没有空间,它看起来应该可以工作,但圣路易斯、圣彼得堡、东兰辛等都不匹配。如果PHP代码可以处理它,那么可以使用^([^/]+)/([^/]+)Yea。他对自己可能的价值没有给出太多的见解,我想他可能会做一些类似于StLouis/StPetersburg的事情,etcI这样的解决方案,但是,我还建议,URI有一个标准化的开始将是有利的。例如,让所有的用户页面都以
/user/
开头,所有的位置都以
/place/
开头,等等。这样就可以实现更大的扩展性,而不是依赖URI中的元素数量。我不太会修改重写我要牺牲多少速度,同时添加RewriteRule^([^/]+)/([^/]+)会是个坏主意吗/$place.php?state=$1&city=$2[L,QSA]重写规则Places/^([^/]+)/([^/]+)/$place.php?state=$1&city=$2[L,QSA],这样我就可以使用Lucanos建议,但同时有更短的版本了?你建议我不要超过多少规定?这是在我的根目录中,我想为所有页面添加规则。在httpd.ini中编写您的一般规则(如果http.ini为空,请在apache2.ini中编写),而apache2 httpd.ini是空的,因为多年来它变得如此庞大,不管怎样。。。。与httpd.conf等主服务器配置文件不同,每次请求时都会读取Htaccess文件,因此Apache会搜索启用了Htaccess的所有目录和子目录,以获得一个.Htaccess文件,该文件会由于文件访问而导致性能损失。请记住,如果这样做,您必须重新启动apache。如果您有linux设备:/etc/init.d/apache2重新启动
# stop rewriting process if request can be mapped to file or directory
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

# get user pages
RewriteRule ^([^/]+)\.html$ profile.php?user=$1 [L,QSA]

# get paces
RewriteRule ^([^/]+)/([^/]+)/$ place.php?state=$1&city=$2 [L,QSA]