foo.com/alice по сравнению с foo.com/users/alice

После прочтения вашего кода кажется, что ошибка исходит от вашего объекта записи

я предлагаю вам написать код наподобие: (установить ваш писатель вне цикла)

writer = pd.ExcelWriter('MiniBids_multiple_Results_Sample2.xlsx', engine='xlsxwriter')

for cust in Unique_cust_list:
     :
     :
    ## insert the figure as image
    worksheet.insert_image('E1', 'figSaved')

writer.save()
9
задан dreeves 23 April 2009 в 05:28
поделиться

2 ответа

Следующие правила переписывают URL-адрес в форме foo.com/bar на условное обозначение foo.com/userpage?user=bar, если бар уже не является файлом или каталогом на сервере. Поместите следующее в .htaccess:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/?$ userpage?user=$1 [NC,L]
</IfModule>

Как и в ответе Алекса, скрипт пользовательской страницы должен перенаправить на createnew, если пользователь не существует:

$user = $_GET['user'];
if (!user_exists($user)) {
  header('Location: createnew?user=' . urlencode($user));
}

(Как говорит Кнут, остерегайтесь ошибок в приведенном выше коде - у меня есть только доказал, что это правильно, а не пытался. Я обновлю этот ответ, когда я фактически подтвердил, что он работает.) PS: ПОДТВЕРЖДЕН!

3
ответ дан 4 December 2019 в 21:51
поделиться

Я бы сказал, что это зависит от того, как ваш сайт ориентирован на пользователя.

Такие сайты, как myspace, являются http://www.myspace.com/jim/ , потому что Сайт полностью вращается вокруг пользователя.

Тем не менее, блог или новостной сайт, где вы можете зарегистрироваться, но это не важно или не обязательно, могут быть полезны

http://www.news.com.au/users/ jim /

Как вы думаете, если вы создаете веб-сайт с пользователями, вы могли бы извлечь выгоду из шаблона проектирования MVC или хотя бы из популярной инфраструктуры MVC, которая использует маршрутизатор для направления URI?

Если этот URI прошел через Маршрутизатор, а затем был отправлен на UsersController, вы можете решить либо показать профиль пользователя, либо направить их на создание этого пользователя. Вам не нужно возиться с mod_rewrite, кроме как создать одно правило, которое направляет все запросы к несуществующим файлам для индексации. php (или любой другой язык по умолчанию на стороне сервера)

Если вы действительно хотите использовать mod_rewrite, попробуйте эти правила

RewriteEngine On
RewriteCond %{REQUEST_URI} !(home|contact|about) [NC] // this line may be incorrect
RewriteRule ^/users/([^/]+)/?$ userpage?user=$1 [NC,L]

Обратите внимание на начальный Carat, предложенный Gumbo, поэтому он соответствует только / users / из TLD только.

Это будет соответствовать чему-либо как foo.com/users/bob с дополнительной косой чертой. Он нечувствителен к регистру и будет последним применяемым правилом.

Если запрос приходит, а $ _GET ['user'] не существует в вашей БД, вы можете попробовать что-то вроде этого

$user = $_GET['user'];

if (!user_exists($user)) {

    header('Location: createnew?user=' . urlencode($user));
    exit();

}

Затем на странице createnew просто сделайте что-то вроде этого

<input type="text" name="username" value="<?php echo htmlspecialchars(urldecode($_GET['user'])); ?>" />

, которое автоматически заполнит имя пользователя именем пользователя, с которым они пытались получить доступ к профилю.

Если вы хотите узнать больше о PHP и MVC, попробуйте поиск в Google или спросите вопрос здесь о переполнении стека.

попробуйте эти правила

RewriteEngine On
RewriteCond %{REQUEST_URI} !(home|contact|about) [NC] // this line may be incorrect
RewriteRule ^/users/([^/]+)/?$ userpage?user=$1 [NC,L]

Обратите внимание на начальный Carat, предложенный Gumbo, так что он соответствует только / users / TLD.

Это будет соответствовать чему-либо вроде foo.com/users/bob с дополнительной косой чертой. Он нечувствителен к регистру и будет последним применяемым правилом.

Если запрос приходит, а $ _GET ['user'] не существует в вашей БД, вы можете попробовать что-то вроде этого

$user = $_GET['user'];

if (!user_exists($user)) {

    header('Location: createnew?user=' . urlencode($user));
    exit();

}

Затем на странице createnew просто сделайте что-то вроде этого

<input type="text" name="username" value="<?php echo htmlspecialchars(urldecode($_GET['user'])); ?>" />

, которое автоматически заполнит имя пользователя именем пользователя, с которым они пытались получить доступ к профилю.

Если вы хотите узнать больше о PHP и MVC, попробуйте поиск в Google или спросите вопрос здесь о переполнении стека.

попробуйте эти правила

RewriteEngine On
RewriteCond %{REQUEST_URI} !(home|contact|about) [NC] // this line may be incorrect
RewriteRule ^/users/([^/]+)/?$ userpage?user=$1 [NC,L]

Обратите внимание на начальный Carat, предложенный Gumbo, так что он соответствует только / users / TLD.

Это будет соответствовать чему-либо вроде foo.com/users/bob с дополнительной косой чертой. Он нечувствителен к регистру и будет последним применяемым правилом.

Если запрос приходит, а $ _GET ['user'] не существует в вашей БД, вы можете попробовать что-то вроде этого

$user = $_GET['user'];

if (!user_exists($user)) {

    header('Location: createnew?user=' . urlencode($user));
    exit();

}

Затем на странице createnew просто сделайте что-то вроде этого

<input type="text" name="username" value="<?php echo htmlspecialchars(urldecode($_GET['user'])); ?>" />

, которое автоматически заполнит имя пользователя именем пользователя, с которым они пытались получить доступ к профилю.

Если вы хотите узнать больше о PHP и MVC, попробуйте поиск в Google или спросите вопрос здесь о переполнении стека.

6
ответ дан 4 December 2019 в 21:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: