Php 我的mod rewrite无法更改URL
我想将my.example.com/newsletter.php或example.com/newsletter.php替换为example.com/newsletter/ 我试过这个:Php 我的mod rewrite无法更改URL,php,.htaccess,mod-rewrite,Php,.htaccess,Mod Rewrite,我想将my.example.com/newsletter.php或example.com/newsletter.php替换为example.com/newsletter/ 我试过这个: RewriteEngine On RewriteRule ^([a-z]+)$ /$1.php [L] 如果我想要呢 是一个特定的名字,比如 可能吗?您需要检查请求的内容是否确实存在,否则您将陷入各种麻烦!试试这个: RewriteCond %{REQUEST_FILENAME} !-f RewriteCond
RewriteEngine On
RewriteRule ^([a-z]+)$ /$1.php [L]
如果我想要呢
是一个特定的名字,比如
可能吗?您需要检查请求的内容是否确实存在,否则您将陷入各种麻烦!试试这个:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /$1.php
至于执行第二项任务,显然需要在PHP代码中使用查找函数来获取要查找的项目的id。首先,确保您实际上没有/communities
目录
文档中提供了大量帮助:您需要检查请求的内容是否确实存在,否则您会遇到各种各样的麻烦!试试这个:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /$1.php
至于执行第二项任务,显然需要在PHP代码中使用查找函数来获取要查找的项目的id。首先,确保您实际上没有/communities
目录
文档中提供了大量帮助:关于前导斜杠,其他答案都是正确的,您应该了解尾随斜杠的可能性(请记住,“$”标记字符串的结尾) 试着这样做: RewriteBase / RewriteCond %{SCRIPT_FILENAME} !-f RewriteCond %{SCRIPT_FILENAME} !-d RewriteRule ^([a-z-]+)/?$ /$1.php [QSA,NC,L] 重写基/ 重写cond%{SCRIPT_FILENAME}!-f 重写cond%{SCRIPT_FILENAME}!-d 重写规则^([a-z-]+)/?$/$1.php[QSA,NC,L] 注意:
QSA
标志代表“查询字符串附加”,并将任何url查询传递到相关页面
嗯
编辑:对于包含除小写字母以外的字符的URL,您应该更改范围组,使用不区分大小写的开关,或者按照其他人的示例简单地使用
(.*)
。其他答案关于前导斜杠是正确的,您应该注意到可能会出现尾随斜杠(请记住,“$”标记字符串的结尾
试着这样做:
RewriteBase /
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^([a-z-]+)/?$ /$1.php [QSA,NC,L]
重写基/
重写cond%{SCRIPT_FILENAME}!-f
重写cond%{SCRIPT_FILENAME}!-d
重写规则^([a-z-]+)/?$/$1.php[QSA,NC,L]
注意:QSA
标志代表“查询字符串附加”,并将任何url查询传递到相关页面
嗯
编辑:对于包含除小写字母以外的字符的URL,您应该更改范围组,使用不区分大小写的开关或只使用
(*)
根据其他人的例子!请在此处查看我的答案:与您试图在此处执行的操作基本相同。请在此处查看我的答案:与您试图在此处执行的操作基本相同。+1表示尾随斜杠。@Adam给出的示例使用了它,但他的重写规则不包括它。具体名称是什么很快就会变得很棘手!如果你想让所有页面都使用这种方法,那么你最终必须为每个页面编写一个规则!最好创建一个单独的页面来处理基于ID的重定向,将URL参数作为字符串接受,然后将标题位置切换到正确的基于“ID”的页面。这只需要一个或两个修改编写规则,将URL参数传递到页面处理程序文件。运行我的服务器的家伙说他在运行WindowsIIS…我猜mod rewrite不起作用?一定有一个等价物!那么google是你的朋友,你必须搜索答案,年轻的学徒(抱歉,时间太晚了,这是漫长的一天)但是你可以看看他们提供了一个“免费软件”版本,但是请考虑它的局限性。---或者找出你的主机是否提供了基于Apache的服务器,并要求你的站点进行传输。许多主机同时提供Windows IIS和WAMP/LAMP服务器。如果你有一个友好的主机,他们应该乐于提供帮助,如果它们是V的话。很好,DNS和all都可能在一周内完成!!+1表示尾随斜杠。@Adam给出的示例使用了它,但他的重写规则不包括它。具体的名称问题会很快变得棘手!如果你想让所有页面都使用此方法,你就必须为每个页面编写一个规则!最好创建一个se分离页面以处理基于ID的重定向,将URL参数作为字符串接受,然后将标题位置切换到正确的基于“ID”的页面。这只需要一个或两个mod_重写规则即可将URL参数传递到页面处理程序文件。运行我的服务器的家伙说他正在运行WindowsIIS…我猜mod rewrite不起作用k?一定有一个等价物啊!!那么谷歌是你的朋友,你必须搜索答案,年轻的学徒(很抱歉,时间太晚了,这是漫长的一天)但是你可以看看他们提供了一个“免费软件”版本,但是请考虑它的局限性。---或者找出你的主机是否提供了基于Apache的服务器,并要求你的站点进行传输。许多主机同时提供Windows IIS和WAMP/LAMP服务器。如果你有一个友好的主机,他们应该乐于提供帮助,如果它们是V的话。很好,这一切都可能在一周内完成!!