【问题标题】:url rewriting by profile name通过配置文件名称重写 url
【发布时间】:2015-09-08 11:41:23
【问题描述】:

我的 URL 重写有问题。我想通过用户名获取 url,比如

 yourdomain.com/joshua

但错误停留在 404 上。

.htaccess

ErrorDocument 404 /eror/404.php
ErrorDocument 403 /eror/403.php
ErrorDocument 500 /eror/403.php

RewriteEngine on
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.recettes.nl/$1 [R,L]
RewriteBase /
RewriteCond  %{REQUEST_FILENAME} !-f
RewriteCond  %{REQUEST_FILENAME} !-d

RewriteRule ^about$ about.php
RewriteRule ^recettes$ recettes.php
RewriteRule ^contact$ contact.php
RewriteRule ^([A-Za-z0-9-]+)/?$ profile.php?user=$1 [QSA,L]
RewriteRule ^recept$ recept.php

RewriteRule ^login$ login.php
RewriteRule ^logout$ logout.php
RewriteRule ^register$ register.php

.profile.php

    if(!(isset($_GET['user']) && $_GET['user'] == $me['id'] || !isset($_GET['user'])) || isset($me)) {
    redirectByPermission('profiles');
}
function notempty($str) {
    return ($str != '');
}
if(isset($_GET['user'])) {
    $user_sql = $dbh->prepare('SELECT * FROM users WHERE id = :id');
    $user_sql->bindParam(':id', trim($_GET['user']), PDO::PARAM_INT);
    $user_sql->execute();
    $user = $user_sql->fetch();
}else{
    $user = $me;
}

有人可以帮我解决这个问题并告诉我我做错了什么吗?

【问题讨论】:

  • 你只需要:RewriteRule ^([A-Za-z0-9-]+)/?$ profile.php?user=$1 [QSA,L]
  • @anubhava 它给出了 ERR_TOO_MANY_REDIRECTS 错误。
  • 这个规则甚至不重定向,所以你有一些其他冲突的规则。
  • 不在 cmets 中,编辑您的问题并在那里提供您的代码。
  • Oké @anubhava 很酷:P

标签: php regex .htaccess mod-rewrite


【解决方案1】:

拥有完整的 .htaccess:

ErrorDocument 404 /eror/404.php
ErrorDocument 403 /eror/403.php
ErrorDocument 500 /eror/403.php

RewriteEngine on
RewriteBase /

RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=302,L]

RewriteRule ^(about|recettes|contact|login|logout|register)/?$ $1.php [L,NC]

RewriteCond  %{REQUEST_FILENAME} !-f
RewriteCond  %{REQUEST_FILENAME} !-d
RewriteRule ^([A-Za-z0-9-]+)/?$ profile.php?user=$1 [QSA,L]

请务必在清除浏览器缓存后对其进行测试。

【讨论】:

  • 我已经更改它并为页面页面添加 thnx :-) 但是通过配置文件我仍然得到 ERR_TOO_MANY_REDIRECTS,recettes.nl/joshua 这是一个测试配置文件
  • 否,除非有其他代码或规则,否则此代码不会重定向到/profile
  • 我发现了问题,我有一个脚本阻止了非离线用户,当你想查看页面时需要登录。
【解决方案2】:

试试这个,

RewriteEngine on
RewriteBase /
RewriteCond  %{REQUEST_FILENAME} !-f
RewriteCond  %{REQUEST_FILENAME} !-d
RewriteRule  ^(.*)$ index.php?name=$1 [QSA,L]

希望对你有帮助。

【讨论】:

  • Thnx,我试试,我已经有了 rewriteEngine 等,但没有 -d 和 -f。
猜你喜欢
  • 2016-01-31
  • 2014-03-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-18
  • 2013-07-18
  • 1970-01-01
  • 1970-01-01
  • 2011-08-25
相关资源
最近更新 更多