Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我的mod rewrite无法更改URL_Php_.htaccess_Mod Rewrite - Fatal编程技术网

Php 我的mod rewrite无法更改URL

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

我想将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 %{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的话。很好,这一切都可能在一周内完成!!