由于引号我点击超链接时出现404错误。 MySQL列title
具有此值the official "i'm hungry" page
$title = str_replace(' ','-',$row['title']);
<a href='/page/$id/$title'>click me</a>
这是没有modrewrite http://localhost/page.php&id=7&p=the-official-"i'm-hungry"-page
modrewrite将网址更改为http://localhost/page/7/the-official-"i'm-hungry"-page
,但链接无效。
以下是重写规则RewriteRule ^page/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)?/?$ /page.php?id=$1&p=$2 [L]
我如何解决此问题,所以我没有收到404错误?
答案 0 :(得分:1)
通常,您希望按照ID标识您的网页,而不是标题。客户端总是会尝试将奇怪的字符添加到页面标题中,例如"
,/
,'
和&
。这些字符可能会破坏链接。
http://example.com/page/1234/the+official+ “我饿+”/ “我+渴” +页
此重写规则应收集页面的ID,然后将其他任何内容添加为第二个变量:
RewriteRule ^page/([0-9]+)/(.*)$ /page.php?id=$1&p=$2 [L]
如果你这样做,那么标题就变得简洁了,你可以添加更严格的过滤器来防止意外行为(例如,如果用户创建并命名为the official "i'm hungry"/"i'm thirsty" page
页面,你可以将其转换为{{1在URL中不影响您网页的内容。
例如,这两个链接都会将您带到同一个地方:
the-official-i-m-hungry-i-m-thirsy-page
如果要强制用户访问具有正确标题的页面,则可以更新http://stackoverflow.com/questions/12864634/htaccess-and-double-quotations-in-url
http://stackoverflow.com/questions/12864634/gibberishgibberishgibberish
以从URL中获取ID,然后将用户重定向到正确的,美观上合适的URL。例如:
page.php
但是,只要您按网页ID而不是名称加载内容,即使网址不正确,也应该正常工作。
答案 1 :(得分:0)
使用str_replace
代替您使用的preg_replace
代替$title
中的字母和数字,并将其替换为-